<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.5"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>NVTX C++ API Reference: nvtx3.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">NVTX C++ API Reference<span id="projectnumber">&#160;1.0</span>
   </div>
   <div id="projectbrief">C++ convenience wrappers for NVTX v3 C API</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.5 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_48b95086e7eb28d79ef283b47c5fa0c6.html">nvtx3</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle"><div class="title">nvtx3.hpp</div></div>
</div><!--header-->
<div class="contents">
<a href="nvtx3_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment"> *  Copyright (c) 2020-2022, NVIDIA CORPORATION.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment"> *</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span><span class="comment"> *  Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="comment"> *  you may not use this file except in compliance with the License.</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span><span class="comment"> *  You may obtain a copy of the License at</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="comment"> *</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="comment"> *</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><span class="comment"> *  Unless required by applicable law or agreed to in writing, software</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><span class="comment"> *  distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span><span class="comment"> *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span><span class="comment"> *  See the License for the specific language governing permissions and</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span><span class="comment"> *  limitations under the License.</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span><span class="comment"> */</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span> </div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span><span class="comment">/* Temporary helper #defines, #undef&#39;ed at end of header */</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span><span class="preprocessor">#define NVTX3_CPP_VERSION_MAJOR 1</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span><span class="preprocessor">#define NVTX3_CPP_VERSION_MINOR 0</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span> </div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno">   21</span><span class="comment">/* This section handles the decision of whether to provide unversioned symbols.</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span><span class="comment"> * If NVTX3_CPP_REQUIRE_EXPLICIT_VERSION is #defined, unversioned symbols are</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span><span class="comment"> * not provided, and explicit-version symbols such as nvtx3::v1::scoped_range</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span><span class="comment"> * and NVTX3_V1_FUNC_RANGE must be used.  By default, the first #include of this</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span><span class="comment"> * header will define the unversioned symbols such as nvtx3::scoped_range and</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span><span class="comment"> * NVTX3_FUNC_RANGE.  Subsequently including a different major version of this</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span><span class="comment"> * header without #defining NVTX3_CPP_REQUIRE_EXPLICIT_VERSION triggers an error</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span><span class="comment"> * since the symbols would conflict.  Subsequently including of a different</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno">   29</span><span class="comment"> * minor version within the same major version is allowed. Functionality of</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno">   30</span><span class="comment"> * minor versions is cumulative, regardless of include order.</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span><span class="comment"> *</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span><span class="comment"> * Since NVTX3_CPP_REQUIRE_EXPLICIT_VERSION allows all combinations of versions</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno">   33</span><span class="comment"> * to coexist without problems within a translation unit, the recommended best</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span><span class="comment"> * practice for instrumenting header-based libraries with NVTX C++ Wrappers is</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno">   35</span><span class="comment"> * is to #define NVTX3_CPP_REQUIRE_EXPLICIT_VERSION before including nvtx3.hpp,</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno">   36</span><span class="comment"> * #undef it afterward, and only use explicit-version symbols.  This is not</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span><span class="comment"> * necessary in common cases, such as instrumenting a standalone application, or</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span><span class="comment"> * static/shared libraries in .cpp files or headers private to those projects.</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span><span class="comment"> */</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span><span class="comment">/* clang-format off */</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno">   41</span><span class="preprocessor">#if !defined(NVTX3_CPP_REQUIRE_EXPLICIT_VERSION)</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span>  <span class="comment">/* Define macro used by all definitions in this header to indicate the</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span><span class="comment">   * unversioned symbols should be defined in addition to the versioned ones.</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span><span class="comment">   */</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span><span class="preprocessor">  #define NVTX3_INLINE_THIS_VERSION</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span> </div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span><span class="preprocessor">  #if !defined(NVTX3_CPP_INLINED_VERSION_MAJOR)</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno">   48</span>    <span class="comment">/* First occurrence of this header in the translation unit.  Define macros</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno">   49</span><span class="comment">     * indicating which version shall be used for unversioned symbols.</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno">   50</span><span class="comment">     */</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span> </div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#ac2d95bad5f74d08ca6660da2a92a4463">   62</a></span><span class="preprocessor">    #define NVTX3_CPP_INLINED_VERSION_MAJOR 1  </span><span class="comment">// NVTX3_CPP_VERSION_MAJOR</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span> </div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#abb380e5bd6d9e68f116ad5fd2758f861">   74</a></span><span class="preprocessor">    #define NVTX3_CPP_INLINED_VERSION_MINOR 0  </span><span class="comment">// NVTX3_CPP_VERSION_MINOR</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span><span class="preprocessor">  #elif NVTX3_CPP_INLINED_VERSION_MAJOR != NVTX3_CPP_VERSION_MAJOR</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno">   76</span>    <span class="comment">/* Unsupported case -- cannot define unversioned symbols for different major versions</span></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno">   77</span><span class="comment">     * in the same translation unit.</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno">   78</span><span class="comment">     */</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span><span class="preprocessor">    #error \</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span><span class="preprocessor">      &quot;Two different major versions of the NVTX C++ Wrappers are being included in a single .cpp file, with unversioned symbols enabled in both.  Only one major version can enable unversioned symbols in a .cpp file.  To disable unversioned symbols, #define NVTX3_CPP_REQUIRE_EXPLICIT_VERSION before #including nvtx3.hpp, and use the explicit-version symbols instead -- this is the preferred way to use nvtx3.hpp from a header file.&quot;</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span><span class="preprocessor">  #elif (NVTX3_CPP_INLINED_VERSION_MAJOR == NVTX3_CPP_VERSION_MAJOR) &amp;&amp; \</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno">   82</span><span class="preprocessor">    (NVTX3_CPP_INLINED_VERSION_MINOR &lt; NVTX3_CPP_VERSION_MINOR)</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span>    <span class="comment">/* An older minor version of the same major version already defined unversioned</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span><span class="comment">     * symbols.  The new features provided in this header will be inlined</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">   85</span><span class="comment">     * redefine the minor version macro to this header&#39;s version.</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">   86</span><span class="comment">     */</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">   87</span><span class="preprocessor">    #undef NVTX3_CPP_INLINED_VERSION_MINOR</span></div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno">   88</span><span class="preprocessor">    #define NVTX3_CPP_INLINED_VERSION_MINOR 0  </span><span class="comment">// NVTX3_CPP_VERSION_MINOR</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span>    <span class="comment">// else, already have this version or newer, nothing to do</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">   90</span><span class="preprocessor">  #endif</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">   91</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span><span class="comment">/* clang-format on */</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span> </div>
<div class="line"><a id="l00562" name="l00562"></a><span class="lineno">  562</span><span class="comment">/* Temporary helper #defines, removed with #undef at end of header */</span></div>
<div class="line"><a id="l00563" name="l00563"></a><span class="lineno">  563</span> </div>
<div class="line"><a id="l00564" name="l00564"></a><span class="lineno">  564</span><span class="preprocessor">#if !defined(NVTX3_USE_CHECKED_OVERLOADS_FOR_GET)</span></div>
<div class="line"><a id="l00565" name="l00565"></a><span class="lineno">  565</span><span class="preprocessor">#if defined(_MSC_VER) &amp;&amp; _MSC_VER &lt; 1914</span></div>
<div class="line"><a id="l00566" name="l00566"></a><span class="lineno">  566</span><span class="comment">/* Microsoft&#39;s compiler prior to VS2017 Update 7 (15.7) uses an older parser</span></div>
<div class="line"><a id="l00567" name="l00567"></a><span class="lineno">  567</span><span class="comment"> * that does not work with domain::get&#39;s specialization for domain::global,</span></div>
<div class="line"><a id="l00568" name="l00568"></a><span class="lineno">  568</span><span class="comment"> * and would require extra conditions to make SFINAE work for the overloaded</span></div>
<div class="line"><a id="l00569" name="l00569"></a><span class="lineno">  569</span><span class="comment"> * get() functions.  This macro disables use of overloaded get() in order to</span></div>
<div class="line"><a id="l00570" name="l00570"></a><span class="lineno">  570</span><span class="comment"> * work with VS2015 and versions of VS2017 below 15.7, without penalizing</span></div>
<div class="line"><a id="l00571" name="l00571"></a><span class="lineno">  571</span><span class="comment"> * users of newer compilers.  Building with this flag set to 0 means errors</span></div>
<div class="line"><a id="l00572" name="l00572"></a><span class="lineno">  572</span><span class="comment"> * when defining tag structs (see documentation for domain, named_category,</span></div>
<div class="line"><a id="l00573" name="l00573"></a><span class="lineno">  573</span><span class="comment"> * and registered_string) will have more complex compiler error messages</span></div>
<div class="line"><a id="l00574" name="l00574"></a><span class="lineno">  574</span><span class="comment"> * instead of the clear static_assert messages from the get() overloads.</span></div>
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno">  575</span><span class="comment"> */</span></div>
<div class="line"><a id="l00576" name="l00576"></a><span class="lineno">  576</span><span class="preprocessor">#define NVTX3_USE_CHECKED_OVERLOADS_FOR_GET 0</span></div>
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno">  577</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno">  578</span><span class="preprocessor">#define NVTX3_USE_CHECKED_OVERLOADS_FOR_GET 1</span></div>
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno">  579</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00580" name="l00580"></a><span class="lineno">  580</span><span class="preprocessor">#define NVTX3_USE_CHECKED_OVERLOADS_FOR_GET_DEFINED_HERE</span></div>
<div class="line"><a id="l00581" name="l00581"></a><span class="lineno">  581</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00582" name="l00582"></a><span class="lineno">  582</span> </div>
<div class="line"><a id="l00583" name="l00583"></a><span class="lineno">  583</span><span class="comment">/* Within this header, nvtx3::NVTX3_VERSION_NAMESPACE resolves to nvtx3::vX,</span></div>
<div class="line"><a id="l00584" name="l00584"></a><span class="lineno">  584</span><span class="comment"> * where &quot;X&quot; is the major version number. */</span></div>
<div class="line"><a id="l00585" name="l00585"></a><span class="lineno">  585</span><span class="preprocessor">#define NVTX3_CONCAT(A, B) A##B</span></div>
<div class="line"><a id="l00586" name="l00586"></a><span class="lineno">  586</span><span class="preprocessor">#define NVTX3_NAMESPACE_FOR(VERSION) NVTX3_CONCAT(v, VERSION)</span></div>
<div class="line"><a id="l00587" name="l00587"></a><span class="lineno">  587</span><span class="preprocessor">#define NVTX3_VERSION_NAMESPACE NVTX3_NAMESPACE_FOR(NVTX3_CPP_VERSION_MAJOR)</span></div>
<div class="line"><a id="l00588" name="l00588"></a><span class="lineno">  588</span> </div>
<div class="line"><a id="l00589" name="l00589"></a><span class="lineno">  589</span><span class="comment">/* Avoid duplicating #if defined(NVTX3_INLINE_THIS_VERSION) for namespaces</span></div>
<div class="line"><a id="l00590" name="l00590"></a><span class="lineno">  590</span><span class="comment"> * in each minor version by making a macro to use unconditionally, which</span></div>
<div class="line"><a id="l00591" name="l00591"></a><span class="lineno">  591</span><span class="comment"> * resolves to &quot;inline&quot; or nothing as appropriate. */</span></div>
<div class="line"><a id="l00592" name="l00592"></a><span class="lineno">  592</span><span class="preprocessor">#if defined(NVTX3_INLINE_THIS_VERSION)</span></div>
<div class="line"><a id="l00593" name="l00593"></a><span class="lineno">  593</span><span class="preprocessor">#define NVTX3_INLINE_IF_REQUESTED inline</span></div>
<div class="line"><a id="l00594" name="l00594"></a><span class="lineno">  594</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00595" name="l00595"></a><span class="lineno">  595</span><span class="preprocessor">#define NVTX3_INLINE_IF_REQUESTED</span></div>
<div class="line"><a id="l00596" name="l00596"></a><span class="lineno">  596</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00597" name="l00597"></a><span class="lineno">  597</span> </div>
<div class="line"><a id="l00598" name="l00598"></a><span class="lineno">  598</span><span class="comment">/* Enables the use of constexpr when support for C++14 constexpr is present.</span></div>
<div class="line"><a id="l00599" name="l00599"></a><span class="lineno">  599</span><span class="comment"> *</span></div>
<div class="line"><a id="l00600" name="l00600"></a><span class="lineno">  600</span><span class="comment"> * Initialization of a class member that is a union to a specific union member</span></div>
<div class="line"><a id="l00601" name="l00601"></a><span class="lineno">  601</span><span class="comment"> * can only be done in the body of a constructor, not in a member initializer</span></div>
<div class="line"><a id="l00602" name="l00602"></a><span class="lineno">  602</span><span class="comment"> * list.  A constexpr constructor must have an empty body until C++14, so there</span></div>
<div class="line"><a id="l00603" name="l00603"></a><span class="lineno">  603</span><span class="comment"> * is no way to make an initializer of a member union constexpr in C++11.  This</span></div>
<div class="line"><a id="l00604" name="l00604"></a><span class="lineno">  604</span><span class="comment"> * macro allows making functions constexpr in C++14 or newer, but non-constexpr</span></div>
<div class="line"><a id="l00605" name="l00605"></a><span class="lineno">  605</span><span class="comment"> * in C++11 compilation.  It is used here on constructors that initialize their</span></div>
<div class="line"><a id="l00606" name="l00606"></a><span class="lineno">  606</span><span class="comment"> * member unions.</span></div>
<div class="line"><a id="l00607" name="l00607"></a><span class="lineno">  607</span><span class="comment"> */</span></div>
<div class="line"><a id="l00608" name="l00608"></a><span class="lineno">  608</span><span class="preprocessor">#if __cpp_constexpr &gt;= 201304L</span></div>
<div class="line"><a id="l00609" name="l00609"></a><span class="lineno">  609</span><span class="preprocessor">#define NVTX3_CONSTEXPR_IF_CPP14 constexpr</span></div>
<div class="line"><a id="l00610" name="l00610"></a><span class="lineno">  610</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00611" name="l00611"></a><span class="lineno">  611</span><span class="preprocessor">#define NVTX3_CONSTEXPR_IF_CPP14</span></div>
<div class="line"><a id="l00612" name="l00612"></a><span class="lineno">  612</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00613" name="l00613"></a><span class="lineno">  613</span> </div>
<div class="line"><a id="l00614" name="l00614"></a><span class="lineno">  614</span> <span class="comment">/* Use a macro for static asserts, which defaults to static_assert, but that</span></div>
<div class="line"><a id="l00615" name="l00615"></a><span class="lineno">  615</span><span class="comment">  * testing tools can replace with a logging function.  For example:</span></div>
<div class="line"><a id="l00616" name="l00616"></a><span class="lineno">  616</span><span class="comment">  * #define NVTX3_STATIC_ASSERT(c, m) \</span></div>
<div class="line"><a id="l00617" name="l00617"></a><span class="lineno">  617</span><span class="comment">  *   do { if (!(c)) printf(&quot;static_assert would fail: %s\n&quot;, m); } while (0)</span></div>
<div class="line"><a id="l00618" name="l00618"></a><span class="lineno">  618</span><span class="comment">  */</span></div>
<div class="line"><a id="l00619" name="l00619"></a><span class="lineno">  619</span><span class="preprocessor">#if !defined(NVTX3_STATIC_ASSERT)</span></div>
<div class="line"><a id="l00620" name="l00620"></a><span class="lineno">  620</span><span class="preprocessor">#define NVTX3_STATIC_ASSERT(condition, message) static_assert(condition, message);</span></div>
<div class="line"><a id="l00621" name="l00621"></a><span class="lineno">  621</span><span class="preprocessor">#define NVTX3_STATIC_ASSERT_DEFINED_HERE</span></div>
<div class="line"><a id="l00622" name="l00622"></a><span class="lineno">  622</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno">  623</span> </div>
<div class="line"><a id="l00624" name="l00624"></a><span class="lineno">  624</span><span class="comment">/* Implementation sections, enclosed in guard macros for each minor version */</span></div>
<div class="line"><a id="l00625" name="l00625"></a><span class="lineno">  625</span> </div>
<div class="line"><a id="l00626" name="l00626"></a><span class="lineno">  626</span><span class="preprocessor">#ifndef NVTX3_CPP_DEFINITIONS_V1_0</span></div>
<div class="line"><a id="l00627" name="l00627"></a><span class="lineno">  627</span><span class="preprocessor">#define NVTX3_CPP_DEFINITIONS_V1_0</span></div>
<div class="line"><a id="l00628" name="l00628"></a><span class="lineno">  628</span> </div>
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno">  629</span><span class="preprocessor">#include &quot;nvToolsExt.h&quot;</span></div>
<div class="line"><a id="l00630" name="l00630"></a><span class="lineno">  630</span> </div>
<div class="line"><a id="l00631" name="l00631"></a><span class="lineno">  631</span><span class="preprocessor">#include &lt;memory&gt;</span></div>
<div class="line"><a id="l00632" name="l00632"></a><span class="lineno">  632</span><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a id="l00633" name="l00633"></a><span class="lineno">  633</span><span class="preprocessor">#include &lt;type_traits&gt;</span></div>
<div class="line"><a id="l00634" name="l00634"></a><span class="lineno">  634</span><span class="preprocessor">#include &lt;utility&gt;</span></div>
<div class="line"><a id="l00635" name="l00635"></a><span class="lineno">  635</span><span class="preprocessor">#include &lt;cstddef&gt;</span></div>
<div class="line"><a id="l00636" name="l00636"></a><span class="lineno">  636</span> </div>
<div class="line"><a id="l00637" name="l00637"></a><span class="lineno">  637</span><span class="keyword">namespace </span>nvtx3 {</div>
<div class="line"><a id="l00638" name="l00638"></a><span class="lineno">  638</span> </div>
<div class="line"><a id="l00639" name="l00639"></a><span class="lineno">  639</span>NVTX3_INLINE_IF_REQUESTED <span class="keyword">namespace </span>NVTX3_VERSION_NAMESPACE</div>
<div class="line"><a id="l00640" name="l00640"></a><span class="lineno">  640</span>{</div>
<div class="line"><a id="l00641" name="l00641"></a><span class="lineno">  641</span> </div>
<div class="line"><a id="l00642" name="l00642"></a><span class="lineno">  642</span><span class="keyword">namespace </span>detail {</div>
<div class="line"><a id="l00643" name="l00643"></a><span class="lineno">  643</span> </div>
<div class="line"><a id="l00644" name="l00644"></a><span class="lineno">  644</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> Unused&gt;</div>
<div class="line"><a id="l00645" name="l00645"></a><span class="lineno">  645</span><span class="keyword">struct </span>always_false : std::false_type {};</div>
<div class="line"><a id="l00646" name="l00646"></a><span class="lineno">  646</span> </div>
<div class="line"><a id="l00647" name="l00647"></a><span class="lineno">  647</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a id="l00648" name="l00648"></a><span class="lineno">  648</span><span class="keyword">struct </span>has_name : std::false_type {};</div>
<div class="line"><a id="l00649" name="l00649"></a><span class="lineno">  649</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a id="l00650" name="l00650"></a><span class="lineno">  650</span><span class="keyword">struct </span>has_name&lt;T, decltype((void)T::name, void())&gt; : std::true_type {};</div>
<div class="line"><a id="l00651" name="l00651"></a><span class="lineno">  651</span> </div>
<div class="line"><a id="l00652" name="l00652"></a><span class="lineno">  652</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a id="l00653" name="l00653"></a><span class="lineno">  653</span><span class="keyword">struct </span>has_id : std::false_type {};</div>
<div class="line"><a id="l00654" name="l00654"></a><span class="lineno">  654</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a id="l00655" name="l00655"></a><span class="lineno">  655</span><span class="keyword">struct </span>has_id&lt;T, decltype((void)T::id, void())&gt; : std::true_type {};</div>
<div class="line"><a id="l00656" name="l00656"></a><span class="lineno">  656</span> </div>
<div class="line"><a id="l00657" name="l00657"></a><span class="lineno">  657</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a id="l00658" name="l00658"></a><span class="lineno">  658</span><span class="keyword">struct </span>has_message : std::false_type {};</div>
<div class="line"><a id="l00659" name="l00659"></a><span class="lineno">  659</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a id="l00660" name="l00660"></a><span class="lineno">  660</span><span class="keyword">struct </span>has_message&lt;T, decltype((void)T::message, void())&gt; : std::true_type {};</div>
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno">  661</span> </div>
<div class="line"><a id="l00662" name="l00662"></a><span class="lineno">  662</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a id="l00663" name="l00663"></a><span class="lineno">  663</span><span class="keyword">struct </span>is_c_string : std::false_type {};</div>
<div class="line"><a id="l00664" name="l00664"></a><span class="lineno">  664</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a id="l00665" name="l00665"></a><span class="lineno">  665</span><span class="keyword">struct </span>is_c_string&lt;T, typename std::enable_if&lt;</div>
<div class="line"><a id="l00666" name="l00666"></a><span class="lineno">  666</span>  std::is_convertible&lt;T, char const*   &gt;::value ||</div>
<div class="line"><a id="l00667" name="l00667"></a><span class="lineno">  667</span>  std::is_convertible&lt;T, wchar_t const*&gt;::value</div>
<div class="line"><a id="l00668" name="l00668"></a><span class="lineno">  668</span>&gt;::type&gt; : std::true_type {};</div>
<div class="line"><a id="l00669" name="l00669"></a><span class="lineno">  669</span> </div>
<div class="line"><a id="l00670" name="l00670"></a><span class="lineno">  670</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a id="l00671" name="l00671"></a><span class="lineno">  671</span><span class="keyword">using </span>is_uint32 = std::is_same&lt;typename std::decay&lt;T&gt;::type, uint32_t&gt;;</div>
<div class="line"><a id="l00672" name="l00672"></a><span class="lineno">  672</span> </div>
<div class="line"><a id="l00673" name="l00673"></a><span class="lineno">  673</span>}  <span class="comment">// namespace detail</span></div>
<div class="line"><a id="l00674" name="l00674"></a><span class="lineno">  674</span> </div>
<div class="line"><a id="l00728" name="l00728"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1domain.html">  728</a></span><span class="keyword">class </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> {</div>
<div class="line"><a id="l00729" name="l00729"></a><span class="lineno">  729</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00730" name="l00730"></a><span class="lineno">  730</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00731" name="l00731"></a><span class="lineno">  731</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00732" name="l00732"></a><span class="lineno">  732</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a>&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00733" name="l00733"></a><span class="lineno">  733</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a>&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00734" name="l00734"></a><span class="lineno">  734</span> </div>
<div class="line"><a id="l00746" name="l00746"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1domain_1_1global.html">  746</a></span>  <span class="keyword">struct </span><a class="code hl_struct" href="structnvtx3_1_1v1_1_1domain_1_1global.html">global</a> {</div>
<div class="line"><a id="l00747" name="l00747"></a><span class="lineno">  747</span>  };</div>
<div class="line"><a id="l00748" name="l00748"></a><span class="lineno">  748</span> </div>
<div class="line"><a id="l00749" name="l00749"></a><span class="lineno">  749</span><span class="preprocessor">#if NVTX3_USE_CHECKED_OVERLOADS_FOR_GET</span></div>
<div class="line"><a id="l00794" name="l00794"></a><span class="lineno">  794</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = <a class="code hl_struct" href="structnvtx3_1_1v1_1_1domain_1_1global.html">global</a>,</div>
<div class="line"><a id="l00795" name="l00795"></a><span class="lineno">  795</span>    <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00796" name="l00796"></a><span class="lineno">  796</span>      detail::is_c_string&lt;<span class="keyword">decltype</span>(D::name)&gt;::value</div>
<div class="line"><a id="l00797" name="l00797"></a><span class="lineno">  797</span>    , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="line"><a id="l00798" name="l00798"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1domain.html#a0d83a594238449a3da85e337409fc3db">  798</a></span>  <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classnvtx3_1_1v1_1_1domain.html#a0d83a594238449a3da85e337409fc3db">get</a>() <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00799" name="l00799"></a><span class="lineno">  799</span>  {</div>
<div class="line"><a id="l00800" name="l00800"></a><span class="lineno">  800</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span> d(D::name);</div>
<div class="line"><a id="l00801" name="l00801"></a><span class="lineno">  801</span>    <span class="keywordflow">return</span> d;</div>
<div class="line"><a id="l00802" name="l00802"></a><span class="lineno">  802</span>  }</div>
<div class="line"><a id="l00803" name="l00803"></a><span class="lineno">  803</span> </div>
<div class="line"><a id="l00809" name="l00809"></a><span class="lineno">  809</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = global,</div>
<div class="line"><a id="l00810" name="l00810"></a><span class="lineno">  810</span>    <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00811" name="l00811"></a><span class="lineno">  811</span>      !detail::is_c_string&lt;<span class="keyword">decltype</span>(D::name)&gt;::value</div>
<div class="line"><a id="l00812" name="l00812"></a><span class="lineno">  812</span>    , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="line"><a id="l00813" name="l00813"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1domain.html#a0d83a594238449a3da85e337409fc3db">  813</a></span>  <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classnvtx3_1_1v1_1_1domain.html#a0d83a594238449a3da85e337409fc3db">get</a>() <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00814" name="l00814"></a><span class="lineno">  814</span>  {</div>
<div class="line"><a id="l00815" name="l00815"></a><span class="lineno">  815</span>    NVTX3_STATIC_ASSERT(detail::always_false&lt;D&gt;::value,</div>
<div class="line"><a id="l00816" name="l00816"></a><span class="lineno">  816</span>      <span class="stringliteral">&quot;Type used to identify an NVTX domain must contain a static constexpr member &quot;</span></div>
<div class="line"><a id="l00817" name="l00817"></a><span class="lineno">  817</span>      <span class="stringliteral">&quot;called &#39;name&#39; of type const char* or const wchar_t* -- &#39;name&#39; member is not &quot;</span></div>
<div class="line"><a id="l00818" name="l00818"></a><span class="lineno">  818</span>      <span class="stringliteral">&quot;convertible to either of those types&quot;</span>);</div>
<div class="line"><a id="l00819" name="l00819"></a><span class="lineno">  819</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span> unused;</div>
<div class="line"><a id="l00820" name="l00820"></a><span class="lineno">  820</span>    <span class="keywordflow">return</span> unused;  <span class="comment">// Function must compile for static_assert to be triggered</span></div>
<div class="line"><a id="l00821" name="l00821"></a><span class="lineno">  821</span>  }</div>
<div class="line"><a id="l00822" name="l00822"></a><span class="lineno">  822</span> </div>
<div class="line"><a id="l00827" name="l00827"></a><span class="lineno">  827</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = global,</div>
<div class="line"><a id="l00828" name="l00828"></a><span class="lineno">  828</span>    <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00829" name="l00829"></a><span class="lineno">  829</span>      !detail::has_name&lt;D&gt;::value</div>
<div class="line"><a id="l00830" name="l00830"></a><span class="lineno">  830</span>    , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="line"><a id="l00831" name="l00831"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1domain.html#a0d83a594238449a3da85e337409fc3db">  831</a></span>  <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classnvtx3_1_1v1_1_1domain.html#a0d83a594238449a3da85e337409fc3db">get</a>() noexcept</div>
<div class="line"><a id="l00832" name="l00832"></a><span class="lineno">  832</span>  {</div>
<div class="line"><a id="l00833" name="l00833"></a><span class="lineno">  833</span>    NVTX3_STATIC_ASSERT(detail::always_false&lt;D&gt;::value,</div>
<div class="line"><a id="l00834" name="l00834"></a><span class="lineno">  834</span>      <span class="stringliteral">&quot;Type used to identify an NVTX domain must contain a static constexpr member &quot;</span></div>
<div class="line"><a id="l00835" name="l00835"></a><span class="lineno">  835</span>      <span class="stringliteral">&quot;called &#39;name&#39; of type const char* or const wchar_t* -- &#39;name&#39; member is missing&quot;</span>);</div>
<div class="line"><a id="l00836" name="l00836"></a><span class="lineno">  836</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span> unused;</div>
<div class="line"><a id="l00837" name="l00837"></a><span class="lineno">  837</span>    <span class="keywordflow">return</span> unused;  <span class="comment">// Function must compile for static_assert to be triggered</span></div>
<div class="line"><a id="l00838" name="l00838"></a><span class="lineno">  838</span>  }</div>
<div class="line"><a id="l00839" name="l00839"></a><span class="lineno">  839</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00840" name="l00840"></a><span class="lineno">  840</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = global&gt;</div>
<div class="line"><a id="l00841" name="l00841"></a><span class="lineno">  841</span>  <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span>&amp; get() noexcept</div>
<div class="line"><a id="l00842" name="l00842"></a><span class="lineno">  842</span>  {</div>
<div class="line"><a id="l00843" name="l00843"></a><span class="lineno">  843</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span> d(D::name);</div>
<div class="line"><a id="l00844" name="l00844"></a><span class="lineno">  844</span>    <span class="keywordflow">return</span> d;</div>
<div class="line"><a id="l00845" name="l00845"></a><span class="lineno">  845</span>  }</div>
<div class="line"><a id="l00846" name="l00846"></a><span class="lineno">  846</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00847" name="l00847"></a><span class="lineno">  847</span> </div>
<div class="line"><a id="l00854" name="l00854"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1domain.html#aa569f92fc6b823641524ba5daa5baa66">  854</a></span>  <span class="keyword">operator</span> nvtxDomainHandle_t() const noexcept { <span class="keywordflow">return</span> _domain; }</div>
<div class="line"><a id="l00855" name="l00855"></a><span class="lineno">  855</span> </div>
<div class="line"><a id="l00856" name="l00856"></a><span class="lineno">  856</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00865" name="l00865"></a><span class="lineno">  865</span>  <span class="keyword">explicit</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a>(<span class="keywordtype">char</span> <span class="keyword">const</span>* name) noexcept : _domain{nvtxDomainCreateA(name)} {}</div>
<div class="line"><a id="l00866" name="l00866"></a><span class="lineno">  866</span> </div>
<div class="line"><a id="l00875" name="l00875"></a><span class="lineno">  875</span>  <span class="keyword">explicit</span> domain(<span class="keywordtype">wchar_t</span> <span class="keyword">const</span>* name) noexcept : _domain{nvtxDomainCreateW(name)} {}</div>
<div class="line"><a id="l00876" name="l00876"></a><span class="lineno">  876</span> </div>
<div class="line"><a id="l00885" name="l00885"></a><span class="lineno">  885</span>  <span class="keyword">explicit</span> domain(std::string <span class="keyword">const</span>&amp; name) noexcept : domain{name.c_str()} {}</div>
<div class="line"><a id="l00886" name="l00886"></a><span class="lineno">  886</span> </div>
<div class="line"><a id="l00895" name="l00895"></a><span class="lineno">  895</span>  <span class="keyword">explicit</span> domain(std::wstring <span class="keyword">const</span>&amp; name) noexcept : domain{name.c_str()} {}</div>
<div class="line"><a id="l00896" name="l00896"></a><span class="lineno">  896</span> </div>
<div class="line"><a id="l00905" name="l00905"></a><span class="lineno">  905</span>  domain() noexcept {}</div>
<div class="line"><a id="l00906" name="l00906"></a><span class="lineno">  906</span> </div>
<div class="line"><a id="l00921" name="l00921"></a><span class="lineno">  921</span>  ~domain() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l00922" name="l00922"></a><span class="lineno">  922</span> </div>
<div class="line"><a id="l00923" name="l00923"></a><span class="lineno">  923</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00924" name="l00924"></a><span class="lineno">  924</span>  nvtxDomainHandle_t <span class="keyword">const</span> _domain{};  </div>
<div class="line"><a id="l00925" name="l00925"></a><span class="lineno">  925</span>};</div>
<div class="line"><a id="l00926" name="l00926"></a><span class="lineno">  926</span> </div>
<div class="line"><a id="l00940" name="l00940"></a><span class="lineno">  940</span><span class="keyword">template</span> &lt;&gt;</div>
<div class="line"><a id="l00941" name="l00941"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a2035d9aeb0dd80cb41c64352783171b9">  941</a></span><span class="keyword">inline</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span>&amp; domain::get&lt;domain::global&gt;() noexcept</div>
<div class="line"><a id="l00942" name="l00942"></a><span class="lineno">  942</span>{</div>
<div class="line"><a id="l00943" name="l00943"></a><span class="lineno">  943</span>  <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span> d{};</div>
<div class="line"><a id="l00944" name="l00944"></a><span class="lineno">  944</span>  <span class="keywordflow">return</span> d;</div>
<div class="line"><a id="l00945" name="l00945"></a><span class="lineno">  945</span>}</div>
<div class="line"><a id="l00946" name="l00946"></a><span class="lineno">  946</span> </div>
<div class="line"><a id="l00952" name="l00952"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1rgb.html">  952</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structnvtx3_1_1v1_1_1rgb.html">rgb</a> {</div>
<div class="line"><a id="l00954" name="l00954"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">  954</a></span>  <span class="keyword">using </span><a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> = uint8_t;</div>
<div class="line"><a id="l00955" name="l00955"></a><span class="lineno">  955</span> </div>
<div class="line"><a id="l00966" name="l00966"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1rgb.html#a558a299dbc7c98f3d9b7cdd4a5e013e4">  966</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="structnvtx3_1_1v1_1_1rgb.html#a558a299dbc7c98f3d9b7cdd4a5e013e4">rgb</a>(</div>
<div class="line"><a id="l00967" name="l00967"></a><span class="lineno">  967</span>    <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> red_,</div>
<div class="line"><a id="l00968" name="l00968"></a><span class="lineno">  968</span>    <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> green_,</div>
<div class="line"><a id="l00969" name="l00969"></a><span class="lineno">  969</span>    <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> blue_) noexcept</div>
<div class="line"><a id="l00970" name="l00970"></a><span class="lineno">  970</span>    : red{red_}, green{green_}, blue{blue_}</div>
<div class="line"><a id="l00971" name="l00971"></a><span class="lineno">  971</span>  {</div>
<div class="line"><a id="l00972" name="l00972"></a><span class="lineno">  972</span>  }</div>
<div class="line"><a id="l00973" name="l00973"></a><span class="lineno">  973</span> </div>
<div class="line"><a id="l00974" name="l00974"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1rgb.html#a0ba9bc1b62447a26b2763c2e0f89db58">  974</a></span>  <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> red{};    </div>
<div class="line"><a id="l00975" name="l00975"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1rgb.html#a3392ec8cdbe24db639f6bc57904647c3">  975</a></span>  <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> green{};  </div>
<div class="line"><a id="l00976" name="l00976"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1rgb.html#a0d5c114d99170ed8922dbdd743ec580f">  976</a></span>  <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> blue{};   </div>
<div class="line"><a id="l00977" name="l00977"></a><span class="lineno">  977</span>};</div>
<div class="line"><a id="l00978" name="l00978"></a><span class="lineno">  978</span> </div>
<div class="line"><a id="l00984" name="l00984"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1argb.html">  984</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structnvtx3_1_1v1_1_1argb.html">argb</a> final : <a class="code hl_struct" href="structnvtx3_1_1v1_1_1rgb.html">rgb</a> {</div>
<div class="line"><a id="l00997" name="l00997"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1argb.html#afe825f33bf3e68178c1df87d86ec9d93">  997</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="structnvtx3_1_1v1_1_1argb.html#afe825f33bf3e68178c1df87d86ec9d93">argb</a>(</div>
<div class="line"><a id="l00998" name="l00998"></a><span class="lineno">  998</span>    <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> alpha_,</div>
<div class="line"><a id="l00999" name="l00999"></a><span class="lineno">  999</span>    <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> red_,</div>
<div class="line"><a id="l01000" name="l01000"></a><span class="lineno"> 1000</span>    <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> green_,</div>
<div class="line"><a id="l01001" name="l01001"></a><span class="lineno"> 1001</span>    <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> blue_) noexcept</div>
<div class="line"><a id="l01002" name="l01002"></a><span class="lineno"> 1002</span>    : <a class="code hl_struct" href="structnvtx3_1_1v1_1_1rgb.html">rgb</a>{red_, green_, blue_}, alpha{alpha_}</div>
<div class="line"><a id="l01003" name="l01003"></a><span class="lineno"> 1003</span>  {</div>
<div class="line"><a id="l01004" name="l01004"></a><span class="lineno"> 1004</span>  }</div>
<div class="line"><a id="l01005" name="l01005"></a><span class="lineno"> 1005</span> </div>
<div class="line"><a id="l01006" name="l01006"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1argb.html#af2b1b511212ab1c6cb1f5a340dc6b339"> 1006</a></span>  <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> alpha{};  </div>
<div class="line"><a id="l01007" name="l01007"></a><span class="lineno"> 1007</span>};</div>
<div class="line"><a id="l01008" name="l01008"></a><span class="lineno"> 1008</span> </div>
<div class="line"><a id="l01018" name="l01018"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1color.html"> 1018</a></span><span class="keyword">class </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a> {</div>
<div class="line"><a id="l01019" name="l01019"></a><span class="lineno"> 1019</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l01021" name="l01021"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1color.html#a6327e421cdd233398693a2804aea942f"> 1021</a></span>  <span class="keyword">using </span><a class="code hl_typedef" href="classnvtx3_1_1v1_1_1color.html#a6327e421cdd233398693a2804aea942f">value_type</a> = uint32_t;</div>
<div class="line"><a id="l01022" name="l01022"></a><span class="lineno"> 1022</span> </div>
<div class="line"><a id="l01040" name="l01040"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1color.html#a671a9e63379a2896f5c689fb0a37f0a9"> 1040</a></span>  <span class="keyword">constexpr</span> <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1color.html#a671a9e63379a2896f5c689fb0a37f0a9">color</a>(<a class="code hl_typedef" href="classnvtx3_1_1v1_1_1color.html#a6327e421cdd233398693a2804aea942f">value_type</a> hex_code) noexcept : _value{hex_code} {}</div>
<div class="line"><a id="l01041" name="l01041"></a><span class="lineno"> 1041</span> </div>
<div class="line"><a id="l01048" name="l01048"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1color.html#abd11ca09f1b3a66041cea45d4141dc37"> 1048</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1color.html#abd11ca09f1b3a66041cea45d4141dc37">color</a>(<a class="code hl_struct" href="structnvtx3_1_1v1_1_1argb.html">argb</a> argb_) noexcept</div>
<div class="line"><a id="l01049" name="l01049"></a><span class="lineno"> 1049</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a>{from_bytes_msb_to_lsb(argb_.alpha, argb_.red, argb_.green, argb_.blue)}</div>
<div class="line"><a id="l01050" name="l01050"></a><span class="lineno"> 1050</span>  {</div>
<div class="line"><a id="l01051" name="l01051"></a><span class="lineno"> 1051</span>  }</div>
<div class="line"><a id="l01052" name="l01052"></a><span class="lineno"> 1052</span> </div>
<div class="line"><a id="l01061" name="l01061"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1color.html#a47084ed086b5071cd7b070b0a4611e24"> 1061</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1color.html#a47084ed086b5071cd7b070b0a4611e24">color</a>(<a class="code hl_struct" href="structnvtx3_1_1v1_1_1rgb.html">rgb</a> rgb_) noexcept</div>
<div class="line"><a id="l01062" name="l01062"></a><span class="lineno"> 1062</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a>{from_bytes_msb_to_lsb(0xFF, rgb_.red, rgb_.green, rgb_.blue)}</div>
<div class="line"><a id="l01063" name="l01063"></a><span class="lineno"> 1063</span>  {</div>
<div class="line"><a id="l01064" name="l01064"></a><span class="lineno"> 1064</span>  }</div>
<div class="line"><a id="l01065" name="l01065"></a><span class="lineno"> 1065</span> </div>
<div class="line"><a id="l01070" name="l01070"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1color.html#a44f694cefa3afee1d9dfbf2fde3a06f4"> 1070</a></span>  <span class="keyword">constexpr</span> <a class="code hl_typedef" href="classnvtx3_1_1v1_1_1color.html#a6327e421cdd233398693a2804aea942f">value_type</a> <a class="code hl_function" href="classnvtx3_1_1v1_1_1color.html#a44f694cefa3afee1d9dfbf2fde3a06f4">get_value</a>() const noexcept { <span class="keywordflow">return</span> _value; }</div>
<div class="line"><a id="l01071" name="l01071"></a><span class="lineno"> 1071</span> </div>
<div class="line"><a id="l01076" name="l01076"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1color.html#af550398d7d76d9452576860a4363d75c"> 1076</a></span>  <span class="keyword">constexpr</span> nvtxColorType_t <a class="code hl_function" href="classnvtx3_1_1v1_1_1color.html#af550398d7d76d9452576860a4363d75c">get_type</a>() const noexcept { <span class="keywordflow">return</span> _type; }</div>
<div class="line"><a id="l01077" name="l01077"></a><span class="lineno"> 1077</span> </div>
<div class="line"><a id="l01078" name="l01078"></a><span class="lineno"> 1078</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a>() = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l01079" name="l01079"></a><span class="lineno"> 1079</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">~color</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01080" name="l01080"></a><span class="lineno"> 1080</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a> <span class="keyword">const</span>&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01081" name="l01081"></a><span class="lineno"> 1081</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a> <span class="keyword">const</span>&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01082" name="l01082"></a><span class="lineno"> 1082</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01083" name="l01083"></a><span class="lineno"> 1083</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01084" name="l01084"></a><span class="lineno"> 1084</span> </div>
<div class="line"><a id="l01085" name="l01085"></a><span class="lineno"> 1085</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l01091" name="l01091"></a><span class="lineno"> 1091</span>  <span class="keyword">constexpr</span> <span class="keyword">static</span> value_type from_bytes_msb_to_lsb(</div>
<div class="line"><a id="l01092" name="l01092"></a><span class="lineno"> 1092</span>    uint8_t byte3,</div>
<div class="line"><a id="l01093" name="l01093"></a><span class="lineno"> 1093</span>    uint8_t byte2,</div>
<div class="line"><a id="l01094" name="l01094"></a><span class="lineno"> 1094</span>    uint8_t byte1,</div>
<div class="line"><a id="l01095" name="l01095"></a><span class="lineno"> 1095</span>    uint8_t byte0) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l01096" name="l01096"></a><span class="lineno"> 1096</span>  {</div>
<div class="line"><a id="l01097" name="l01097"></a><span class="lineno"> 1097</span>    <span class="keywordflow">return</span> uint32_t{byte3} &lt;&lt; 24 | uint32_t{byte2} &lt;&lt; 16 | uint32_t{byte1} &lt;&lt; 8 | uint32_t{byte0};</div>
<div class="line"><a id="l01098" name="l01098"></a><span class="lineno"> 1098</span>  }</div>
<div class="line"><a id="l01099" name="l01099"></a><span class="lineno"> 1099</span> </div>
<div class="line"><a id="l01100" name="l01100"></a><span class="lineno"> 1100</span>  value_type _value{};                     </div>
<div class="line"><a id="l01101" name="l01101"></a><span class="lineno"> 1101</span>  nvtxColorType_t _type{NVTX_COLOR_ARGB};  </div>
<div class="line"><a id="l01102" name="l01102"></a><span class="lineno"> 1102</span>};</div>
<div class="line"><a id="l01103" name="l01103"></a><span class="lineno"> 1103</span> </div>
<div class="line"><a id="l01125" name="l01125"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1category.html"> 1125</a></span><span class="keyword">class </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a> {</div>
<div class="line"><a id="l01126" name="l01126"></a><span class="lineno"> 1126</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l01128" name="l01128"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1category.html#a93b9c6f1e074a03ee50287c9c6414bc0"> 1128</a></span>  <span class="keyword">using </span><a class="code hl_typedef" href="classnvtx3_1_1v1_1_1category.html#a93b9c6f1e074a03ee50287c9c6414bc0">id_type</a> = uint32_t;</div>
<div class="line"><a id="l01129" name="l01129"></a><span class="lineno"> 1129</span> </div>
<div class="line"><a id="l01139" name="l01139"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1category.html#a16b26c66ef40850b7bf79fb8e8b9ccec"> 1139</a></span>  <span class="keyword">constexpr</span> <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1category.html#a16b26c66ef40850b7bf79fb8e8b9ccec">category</a>(<a class="code hl_typedef" href="classnvtx3_1_1v1_1_1category.html#a93b9c6f1e074a03ee50287c9c6414bc0">id_type</a> <span class="keywordtype">id</span>) noexcept : id_{<span class="keywordtype">id</span>} {}</div>
<div class="line"><a id="l01140" name="l01140"></a><span class="lineno"> 1140</span> </div>
<div class="line"><a id="l01145" name="l01145"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1category.html#a5d59d395dff9e74ec8bd6154581fc345"> 1145</a></span>  <span class="keyword">constexpr</span> <a class="code hl_typedef" href="classnvtx3_1_1v1_1_1category.html#a93b9c6f1e074a03ee50287c9c6414bc0">id_type</a> <a class="code hl_function" href="classnvtx3_1_1v1_1_1category.html#a5d59d395dff9e74ec8bd6154581fc345">get_id</a>() const noexcept { <span class="keywordflow">return</span> id_; }</div>
<div class="line"><a id="l01146" name="l01146"></a><span class="lineno"> 1146</span> </div>
<div class="line"><a id="l01147" name="l01147"></a><span class="lineno"> 1147</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>() = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l01148" name="l01148"></a><span class="lineno"> 1148</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">~category</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01149" name="l01149"></a><span class="lineno"> 1149</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a> <span class="keyword">const</span>&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01150" name="l01150"></a><span class="lineno"> 1150</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a> <span class="keyword">const</span>&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01151" name="l01151"></a><span class="lineno"> 1151</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01152" name="l01152"></a><span class="lineno"> 1152</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01153" name="l01153"></a><span class="lineno"> 1153</span> </div>
<div class="line"><a id="l01154" name="l01154"></a><span class="lineno"> 1154</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l01155" name="l01155"></a><span class="lineno"> 1155</span>  id_type id_{};  </div>
<div class="line"><a id="l01156" name="l01156"></a><span class="lineno"> 1156</span>};</div>
<div class="line"><a id="l01157" name="l01157"></a><span class="lineno"> 1157</span> </div>
<div class="line"><a id="l01207" name="l01207"></a><span class="lineno"> 1207</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = domain::global&gt;</div>
<div class="line"><a id="l01208" name="l01208"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1named__category__in.html"> 1208</a></span><span class="keyword">class </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a> final : <span class="keyword">public</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a> {</div>
<div class="line"><a id="l01209" name="l01209"></a><span class="lineno"> 1209</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l01210" name="l01210"></a><span class="lineno"> 1210</span><span class="preprocessor">#if NVTX3_USE_CHECKED_OVERLOADS_FOR_GET</span></div>
<div class="line"><a id="l01245" name="l01245"></a><span class="lineno"> 1245</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> C,</div>
<div class="line"><a id="l01246" name="l01246"></a><span class="lineno"> 1246</span>    <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01247" name="l01247"></a><span class="lineno"> 1247</span>      detail::is_c_string&lt;<span class="keyword">decltype</span>(C::name)&gt;::value &amp;&amp;</div>
<div class="line"><a id="l01248" name="l01248"></a><span class="lineno"> 1248</span>      detail::is_uint32&lt;<span class="keyword">decltype</span>(C::id)&gt;::value</div>
<div class="line"><a id="l01249" name="l01249"></a><span class="lineno"> 1249</span>    , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="line"><a id="l01250" name="l01250"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1named__category__in.html#a3bc82f4cd71482347796787bc4436e30"> 1250</a></span>  <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classnvtx3_1_1v1_1_1named__category__in.html#a3bc82f4cd71482347796787bc4436e30">get</a>() noexcept</div>
<div class="line"><a id="l01251" name="l01251"></a><span class="lineno"> 1251</span>  {</div>
<div class="line"><a id="l01252" name="l01252"></a><span class="lineno"> 1252</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a> <span class="keyword">const</span> cat(C::id, C::name);</div>
<div class="line"><a id="l01253" name="l01253"></a><span class="lineno"> 1253</span>    <span class="keywordflow">return</span> cat;</div>
<div class="line"><a id="l01254" name="l01254"></a><span class="lineno"> 1254</span>  }</div>
<div class="line"><a id="l01255" name="l01255"></a><span class="lineno"> 1255</span> </div>
<div class="line"><a id="l01262" name="l01262"></a><span class="lineno"> 1262</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> C,</div>
<div class="line"><a id="l01263" name="l01263"></a><span class="lineno"> 1263</span>    <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01264" name="l01264"></a><span class="lineno"> 1264</span>      !detail::is_c_string&lt;<span class="keyword">decltype</span>(C::name)&gt;::value ||</div>
<div class="line"><a id="l01265" name="l01265"></a><span class="lineno"> 1265</span>      !detail::is_uint32&lt;<span class="keyword">decltype</span>(C::id)&gt;::value</div>
<div class="line"><a id="l01266" name="l01266"></a><span class="lineno"> 1266</span>    , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="line"><a id="l01267" name="l01267"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1named__category__in.html#a3bc82f4cd71482347796787bc4436e30"> 1267</a></span>  <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classnvtx3_1_1v1_1_1named__category__in.html#a3bc82f4cd71482347796787bc4436e30">get</a>() noexcept</div>
<div class="line"><a id="l01268" name="l01268"></a><span class="lineno"> 1268</span>  {</div>
<div class="line"><a id="l01269" name="l01269"></a><span class="lineno"> 1269</span>    NVTX3_STATIC_ASSERT(detail::is_c_string&lt;<span class="keyword">decltype</span>(C::name)&gt;::value,</div>
<div class="line"><a id="l01270" name="l01270"></a><span class="lineno"> 1270</span>      <span class="stringliteral">&quot;Type used to name an NVTX category must contain a static constexpr member &quot;</span></div>
<div class="line"><a id="l01271" name="l01271"></a><span class="lineno"> 1271</span>      <span class="stringliteral">&quot;called &#39;name&#39; of type const char* or const wchar_t* -- &#39;name&#39; member is not &quot;</span></div>
<div class="line"><a id="l01272" name="l01272"></a><span class="lineno"> 1272</span>      <span class="stringliteral">&quot;convertible to either of those types&quot;</span>);</div>
<div class="line"><a id="l01273" name="l01273"></a><span class="lineno"> 1273</span>    NVTX3_STATIC_ASSERT(detail::is_uint32&lt;<span class="keyword">decltype</span>(C::id)&gt;::value,</div>
<div class="line"><a id="l01274" name="l01274"></a><span class="lineno"> 1274</span>      <span class="stringliteral">&quot;Type used to name an NVTX category must contain a static constexpr member &quot;</span></div>
<div class="line"><a id="l01275" name="l01275"></a><span class="lineno"> 1275</span>      <span class="stringliteral">&quot;called &#39;id&#39; of type uint32_t -- &#39;id&#39; member is the wrong type&quot;</span>);</div>
<div class="line"><a id="l01276" name="l01276"></a><span class="lineno"> 1276</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a> <span class="keyword">const</span> unused;</div>
<div class="line"><a id="l01277" name="l01277"></a><span class="lineno"> 1277</span>    <span class="keywordflow">return</span> unused;  <span class="comment">// Function must compile for static_assert to be triggered</span></div>
<div class="line"><a id="l01278" name="l01278"></a><span class="lineno"> 1278</span>  }</div>
<div class="line"><a id="l01279" name="l01279"></a><span class="lineno"> 1279</span> </div>
<div class="line"><a id="l01284" name="l01284"></a><span class="lineno"> 1284</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> C,</div>
<div class="line"><a id="l01285" name="l01285"></a><span class="lineno"> 1285</span>    <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01286" name="l01286"></a><span class="lineno"> 1286</span>      !detail::has_name&lt;C&gt;::value ||</div>
<div class="line"><a id="l01287" name="l01287"></a><span class="lineno"> 1287</span>      !detail::has_id&lt;C&gt;::value</div>
<div class="line"><a id="l01288" name="l01288"></a><span class="lineno"> 1288</span>    , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="line"><a id="l01289" name="l01289"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1named__category__in.html#a3bc82f4cd71482347796787bc4436e30"> 1289</a></span>  <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classnvtx3_1_1v1_1_1named__category__in.html#a3bc82f4cd71482347796787bc4436e30">get</a>() noexcept</div>
<div class="line"><a id="l01290" name="l01290"></a><span class="lineno"> 1290</span>  {</div>
<div class="line"><a id="l01291" name="l01291"></a><span class="lineno"> 1291</span>    NVTX3_STATIC_ASSERT(detail::has_name&lt;C&gt;::value,</div>
<div class="line"><a id="l01292" name="l01292"></a><span class="lineno"> 1292</span>      <span class="stringliteral">&quot;Type used to name an NVTX category must contain a static constexpr member &quot;</span></div>
<div class="line"><a id="l01293" name="l01293"></a><span class="lineno"> 1293</span>      <span class="stringliteral">&quot;called &#39;name&#39; of type const char* or const wchar_t* -- &#39;name&#39; member is missing&quot;</span>);</div>
<div class="line"><a id="l01294" name="l01294"></a><span class="lineno"> 1294</span>    NVTX3_STATIC_ASSERT(detail::has_id&lt;C&gt;::value,</div>
<div class="line"><a id="l01295" name="l01295"></a><span class="lineno"> 1295</span>      <span class="stringliteral">&quot;Type used to name an NVTX category must contain a static constexpr member &quot;</span></div>
<div class="line"><a id="l01296" name="l01296"></a><span class="lineno"> 1296</span>      <span class="stringliteral">&quot;called &#39;id&#39; of type uint32_t -- &#39;id&#39; member is missing&quot;</span>);</div>
<div class="line"><a id="l01297" name="l01297"></a><span class="lineno"> 1297</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a> <span class="keyword">const</span> unused;</div>
<div class="line"><a id="l01298" name="l01298"></a><span class="lineno"> 1298</span>    <span class="keywordflow">return</span> unused;  <span class="comment">// Function must compile for static_assert to be triggered</span></div>
<div class="line"><a id="l01299" name="l01299"></a><span class="lineno"> 1299</span>  }</div>
<div class="line"><a id="l01300" name="l01300"></a><span class="lineno"> 1300</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l01301" name="l01301"></a><span class="lineno"> 1301</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> C&gt;</div>
<div class="line"><a id="l01302" name="l01302"></a><span class="lineno"> 1302</span>  <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a> <span class="keyword">const</span>&amp; get() noexcept</div>
<div class="line"><a id="l01303" name="l01303"></a><span class="lineno"> 1303</span>  {</div>
<div class="line"><a id="l01304" name="l01304"></a><span class="lineno"> 1304</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a> <span class="keyword">const</span> cat(C::id, C::name);</div>
<div class="line"><a id="l01305" name="l01305"></a><span class="lineno"> 1305</span>    <span class="keywordflow">return</span> cat;</div>
<div class="line"><a id="l01306" name="l01306"></a><span class="lineno"> 1306</span>  }</div>
<div class="line"><a id="l01307" name="l01307"></a><span class="lineno"> 1307</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l01308" name="l01308"></a><span class="lineno"> 1308</span> </div>
<div class="line"><a id="l01309" name="l01309"></a><span class="lineno"> 1309</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l01310" name="l01310"></a><span class="lineno"> 1310</span>  <span class="comment">// Default constructor is only used internally for static_assert(false) cases.</span></div>
<div class="line"><a id="l01311" name="l01311"></a><span class="lineno"> 1311</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a>() noexcept : <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>{0} {}</div>
<div class="line"><a id="l01312" name="l01312"></a><span class="lineno"> 1312</span> </div>
<div class="line"><a id="l01313" name="l01313"></a><span class="lineno"> 1313</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l01324" name="l01324"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1named__category__in.html#a7fe4261f6a0b9d1cfb6e566d8ff2135f"> 1324</a></span>  <a class="code hl_function" href="classnvtx3_1_1v1_1_1named__category__in.html#a7fe4261f6a0b9d1cfb6e566d8ff2135f">named_category_in</a>(<a class="code hl_typedef" href="classnvtx3_1_1v1_1_1category.html#a93b9c6f1e074a03ee50287c9c6414bc0">id_type</a> <span class="keywordtype">id</span>, <span class="keywordtype">char</span> <span class="keyword">const</span>* name) noexcept : <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>{<span class="keywordtype">id</span>}</div>
<div class="line"><a id="l01325" name="l01325"></a><span class="lineno"> 1325</span>  {</div>
<div class="line"><a id="l01326" name="l01326"></a><span class="lineno"> 1326</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l01327" name="l01327"></a><span class="lineno"> 1327</span>    nvtxDomainNameCategoryA(domain::get&lt;D&gt;(), get_id(), name);</div>
<div class="line"><a id="l01328" name="l01328"></a><span class="lineno"> 1328</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l01329" name="l01329"></a><span class="lineno"> 1329</span>    (void)<span class="keywordtype">id</span>;</div>
<div class="line"><a id="l01330" name="l01330"></a><span class="lineno"> 1330</span>    (void)name;</div>
<div class="line"><a id="l01331" name="l01331"></a><span class="lineno"> 1331</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l01332" name="l01332"></a><span class="lineno"> 1332</span>  };</div>
<div class="line"><a id="l01333" name="l01333"></a><span class="lineno"> 1333</span> </div>
<div class="line"><a id="l01344" name="l01344"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1named__category__in.html#a0b8ac1f00f1c0686858a20884c8eb19a"> 1344</a></span>  <a class="code hl_function" href="classnvtx3_1_1v1_1_1named__category__in.html#a0b8ac1f00f1c0686858a20884c8eb19a">named_category_in</a>(<a class="code hl_typedef" href="classnvtx3_1_1v1_1_1category.html#a93b9c6f1e074a03ee50287c9c6414bc0">id_type</a> <span class="keywordtype">id</span>, <span class="keywordtype">wchar_t</span> <span class="keyword">const</span>* name) noexcept : <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>{<span class="keywordtype">id</span>}</div>
<div class="line"><a id="l01345" name="l01345"></a><span class="lineno"> 1345</span>  {</div>
<div class="line"><a id="l01346" name="l01346"></a><span class="lineno"> 1346</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l01347" name="l01347"></a><span class="lineno"> 1347</span>    nvtxDomainNameCategoryW(domain::get&lt;D&gt;(), get_id(), name);</div>
<div class="line"><a id="l01348" name="l01348"></a><span class="lineno"> 1348</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l01349" name="l01349"></a><span class="lineno"> 1349</span>    (void)<span class="keywordtype">id</span>;</div>
<div class="line"><a id="l01350" name="l01350"></a><span class="lineno"> 1350</span>    (void)name;</div>
<div class="line"><a id="l01351" name="l01351"></a><span class="lineno"> 1351</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l01352" name="l01352"></a><span class="lineno"> 1352</span>  };</div>
<div class="line"><a id="l01353" name="l01353"></a><span class="lineno"> 1353</span>};</div>
<div class="line"><a id="l01354" name="l01354"></a><span class="lineno"> 1354</span> </div>
<div class="line"><a id="l01359" name="l01359"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a5ffa040266b85b6fb131dcb9ade33a0a"> 1359</a></span><span class="keyword">using </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category</a> = <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in&lt;domain::global&gt;</a>;</div>
<div class="line"><a id="l01360" name="l01360"></a><span class="lineno"> 1360</span> </div>
<div class="line"><a id="l01407" name="l01407"></a><span class="lineno"> 1407</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = domain::global&gt;</div>
<div class="line"><a id="l01408" name="l01408"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1registered__string__in.html"> 1408</a></span><span class="keyword">class </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> {</div>
<div class="line"><a id="l01409" name="l01409"></a><span class="lineno"> 1409</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l01410" name="l01410"></a><span class="lineno"> 1410</span><span class="preprocessor">#if NVTX3_USE_CHECKED_OVERLOADS_FOR_GET</span></div>
<div class="line"><a id="l01444" name="l01444"></a><span class="lineno"> 1444</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M,</div>
<div class="line"><a id="l01445" name="l01445"></a><span class="lineno"> 1445</span>    <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01446" name="l01446"></a><span class="lineno"> 1446</span>      detail::is_c_string&lt;<span class="keyword">decltype</span>(M::message)&gt;::value</div>
<div class="line"><a id="l01447" name="l01447"></a><span class="lineno"> 1447</span>    , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="line"><a id="l01448" name="l01448"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1registered__string__in.html#abf90f8765081cee5f99d971271e29567"> 1448</a></span>  <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classnvtx3_1_1v1_1_1registered__string__in.html#abf90f8765081cee5f99d971271e29567">get</a>() <span class="keyword">noexcept</span></div>
<div class="line"><a id="l01449" name="l01449"></a><span class="lineno"> 1449</span>  {</div>
<div class="line"><a id="l01450" name="l01450"></a><span class="lineno"> 1450</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span> regstr(M::message);</div>
<div class="line"><a id="l01451" name="l01451"></a><span class="lineno"> 1451</span>    <span class="keywordflow">return</span> regstr;</div>
<div class="line"><a id="l01452" name="l01452"></a><span class="lineno"> 1452</span>  }</div>
<div class="line"><a id="l01453" name="l01453"></a><span class="lineno"> 1453</span> </div>
<div class="line"><a id="l01459" name="l01459"></a><span class="lineno"> 1459</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M,</div>
<div class="line"><a id="l01460" name="l01460"></a><span class="lineno"> 1460</span>    <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01461" name="l01461"></a><span class="lineno"> 1461</span>      !detail::is_c_string&lt;<span class="keyword">decltype</span>(M::message)&gt;::value</div>
<div class="line"><a id="l01462" name="l01462"></a><span class="lineno"> 1462</span>    , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="line"><a id="l01463" name="l01463"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1registered__string__in.html#abf90f8765081cee5f99d971271e29567"> 1463</a></span>  <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classnvtx3_1_1v1_1_1registered__string__in.html#abf90f8765081cee5f99d971271e29567">get</a>() <span class="keyword">noexcept</span></div>
<div class="line"><a id="l01464" name="l01464"></a><span class="lineno"> 1464</span>  {</div>
<div class="line"><a id="l01465" name="l01465"></a><span class="lineno"> 1465</span>    NVTX3_STATIC_ASSERT(detail::always_false&lt;M&gt;::value,</div>
<div class="line"><a id="l01466" name="l01466"></a><span class="lineno"> 1466</span>      <span class="stringliteral">&quot;Type used to register an NVTX string must contain a static constexpr member &quot;</span></div>
<div class="line"><a id="l01467" name="l01467"></a><span class="lineno"> 1467</span>      <span class="stringliteral">&quot;called &#39;message&#39; of type const char* or const wchar_t* -- &#39;message&#39; member is &quot;</span></div>
<div class="line"><a id="l01468" name="l01468"></a><span class="lineno"> 1468</span>      <span class="stringliteral">&quot;not convertible to either of those types&quot;</span>);</div>
<div class="line"><a id="l01469" name="l01469"></a><span class="lineno"> 1469</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span> unused;</div>
<div class="line"><a id="l01470" name="l01470"></a><span class="lineno"> 1470</span>    <span class="keywordflow">return</span> unused;  <span class="comment">// Function must compile for static_assert to be triggered</span></div>
<div class="line"><a id="l01471" name="l01471"></a><span class="lineno"> 1471</span>  }</div>
<div class="line"><a id="l01472" name="l01472"></a><span class="lineno"> 1472</span> </div>
<div class="line"><a id="l01477" name="l01477"></a><span class="lineno"> 1477</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M,</div>
<div class="line"><a id="l01478" name="l01478"></a><span class="lineno"> 1478</span>    <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01479" name="l01479"></a><span class="lineno"> 1479</span>      !detail::has_message&lt;M&gt;::value</div>
<div class="line"><a id="l01480" name="l01480"></a><span class="lineno"> 1480</span>    , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="line"><a id="l01481" name="l01481"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1registered__string__in.html#abf90f8765081cee5f99d971271e29567"> 1481</a></span>  <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classnvtx3_1_1v1_1_1registered__string__in.html#abf90f8765081cee5f99d971271e29567">get</a>() noexcept</div>
<div class="line"><a id="l01482" name="l01482"></a><span class="lineno"> 1482</span>  {</div>
<div class="line"><a id="l01483" name="l01483"></a><span class="lineno"> 1483</span>    NVTX3_STATIC_ASSERT(detail::always_false&lt;M&gt;::value,</div>
<div class="line"><a id="l01484" name="l01484"></a><span class="lineno"> 1484</span>      <span class="stringliteral">&quot;Type used to register an NVTX string must contain a static constexpr member &quot;</span></div>
<div class="line"><a id="l01485" name="l01485"></a><span class="lineno"> 1485</span>      <span class="stringliteral">&quot;called &#39;message&#39; of type const char* or const wchar_t* -- &#39;message&#39; member &quot;</span></div>
<div class="line"><a id="l01486" name="l01486"></a><span class="lineno"> 1486</span>      <span class="stringliteral">&quot;is missing&quot;</span>);</div>
<div class="line"><a id="l01487" name="l01487"></a><span class="lineno"> 1487</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span> unused;</div>
<div class="line"><a id="l01488" name="l01488"></a><span class="lineno"> 1488</span>    <span class="keywordflow">return</span> unused;  <span class="comment">// Function must compile for static_assert to be triggered</span></div>
<div class="line"><a id="l01489" name="l01489"></a><span class="lineno"> 1489</span>  }</div>
<div class="line"><a id="l01490" name="l01490"></a><span class="lineno"> 1490</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l01491" name="l01491"></a><span class="lineno"> 1491</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M&gt;</div>
<div class="line"><a id="l01492" name="l01492"></a><span class="lineno"> 1492</span>  <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span>&amp; get() noexcept</div>
<div class="line"><a id="l01493" name="l01493"></a><span class="lineno"> 1493</span>  {</div>
<div class="line"><a id="l01494" name="l01494"></a><span class="lineno"> 1494</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span> regstr(M::message);</div>
<div class="line"><a id="l01495" name="l01495"></a><span class="lineno"> 1495</span>    <span class="keywordflow">return</span> regstr;</div>
<div class="line"><a id="l01496" name="l01496"></a><span class="lineno"> 1496</span>  }</div>
<div class="line"><a id="l01497" name="l01497"></a><span class="lineno"> 1497</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l01498" name="l01498"></a><span class="lineno"> 1498</span> </div>
<div class="line"><a id="l01510" name="l01510"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1registered__string__in.html#a059adcf011e73293c1d76a512d316524"> 1510</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1registered__string__in.html#a059adcf011e73293c1d76a512d316524">registered_string_in</a>(<span class="keywordtype">char</span> <span class="keyword">const</span>* msg) noexcept</div>
<div class="line"><a id="l01511" name="l01511"></a><span class="lineno"> 1511</span>    : handle_{nvtxDomainRegisterStringA(domain::get&lt;D&gt;(), msg)}</div>
<div class="line"><a id="l01512" name="l01512"></a><span class="lineno"> 1512</span>  {</div>
<div class="line"><a id="l01513" name="l01513"></a><span class="lineno"> 1513</span>  }</div>
<div class="line"><a id="l01514" name="l01514"></a><span class="lineno"> 1514</span> </div>
<div class="line"><a id="l01526" name="l01526"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1registered__string__in.html#a7e8f0b775f6363e2187f50648c5a44f5"> 1526</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1registered__string__in.html#a7e8f0b775f6363e2187f50648c5a44f5">registered_string_in</a>(std::string <span class="keyword">const</span>&amp; msg) noexcept</div>
<div class="line"><a id="l01527" name="l01527"></a><span class="lineno"> 1527</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a>{msg.c_str()} {}</div>
<div class="line"><a id="l01528" name="l01528"></a><span class="lineno"> 1528</span> </div>
<div class="line"><a id="l01540" name="l01540"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1registered__string__in.html#ab9d2c81308244bec4198167e2c8d3d4c"> 1540</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1registered__string__in.html#ab9d2c81308244bec4198167e2c8d3d4c">registered_string_in</a>(<span class="keywordtype">wchar_t</span> <span class="keyword">const</span>* msg) noexcept</div>
<div class="line"><a id="l01541" name="l01541"></a><span class="lineno"> 1541</span>    : handle_{nvtxDomainRegisterStringW(domain::get&lt;D&gt;(), msg)}</div>
<div class="line"><a id="l01542" name="l01542"></a><span class="lineno"> 1542</span>  {</div>
<div class="line"><a id="l01543" name="l01543"></a><span class="lineno"> 1543</span>  }</div>
<div class="line"><a id="l01544" name="l01544"></a><span class="lineno"> 1544</span> </div>
<div class="line"><a id="l01556" name="l01556"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1registered__string__in.html#a90f6112510f0745a373a7fdb162b85de"> 1556</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1registered__string__in.html#a90f6112510f0745a373a7fdb162b85de">registered_string_in</a>(std::wstring <span class="keyword">const</span>&amp; msg) noexcept</div>
<div class="line"><a id="l01557" name="l01557"></a><span class="lineno"> 1557</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a>{msg.c_str()} {}</div>
<div class="line"><a id="l01558" name="l01558"></a><span class="lineno"> 1558</span> </div>
<div class="line"><a id="l01563" name="l01563"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1registered__string__in.html#a13d5f54f46e91073677fcfbe094dd261"> 1563</a></span>  nvtxStringHandle_t <a class="code hl_function" href="classnvtx3_1_1v1_1_1registered__string__in.html#a13d5f54f46e91073677fcfbe094dd261">get_handle</a>() const noexcept { <span class="keywordflow">return</span> handle_; }</div>
<div class="line"><a id="l01564" name="l01564"></a><span class="lineno"> 1564</span> </div>
<div class="line"><a id="l01565" name="l01565"></a><span class="lineno"> 1565</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l01566" name="l01566"></a><span class="lineno"> 1566</span>  <span class="comment">// Default constructor is only used internally for static_assert(false) cases.</span></div>
<div class="line"><a id="l01567" name="l01567"></a><span class="lineno"> 1567</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a>() noexcept {};</div>
<div class="line"><a id="l01568" name="l01568"></a><span class="lineno"> 1568</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l01569" name="l01569"></a><span class="lineno"> 1569</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">~registered_string_in</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01570" name="l01570"></a><span class="lineno"> 1570</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span>&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01571" name="l01571"></a><span class="lineno"> 1571</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span>&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01572" name="l01572"></a><span class="lineno"> 1572</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01573" name="l01573"></a><span class="lineno"> 1573</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01574" name="l01574"></a><span class="lineno"> 1574</span> </div>
<div class="line"><a id="l01575" name="l01575"></a><span class="lineno"> 1575</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l01576" name="l01576"></a><span class="lineno"> 1576</span>  nvtxStringHandle_t handle_{};  </div>
<div class="line"><a id="l01578" name="l01578"></a><span class="lineno"> 1578</span>};</div>
<div class="line"><a id="l01579" name="l01579"></a><span class="lineno"> 1579</span> </div>
<div class="line"><a id="l01584" name="l01584"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a952cb27f352570421161c01763effe63"> 1584</a></span><span class="keyword">using </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string</a> = <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in&lt;domain::global&gt;</a>;</div>
<div class="line"><a id="l01585" name="l01585"></a><span class="lineno"> 1585</span> </div>
<div class="line"><a id="l01623" name="l01623"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html"> 1623</a></span><span class="keyword">class </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1message.html">message</a> {</div>
<div class="line"><a id="l01624" name="l01624"></a><span class="lineno"> 1624</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l01625" name="l01625"></a><span class="lineno"> 1625</span>  <span class="keyword">using </span>value_type = nvtxMessageValue_t;</div>
<div class="line"><a id="l01626" name="l01626"></a><span class="lineno"> 1626</span> </div>
<div class="line"><a id="l01632" name="l01632"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#abdbef47b3202d55a8b956da6b1296448"> 1632</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#abdbef47b3202d55a8b956da6b1296448">message</a>(<span class="keywordtype">char</span> <span class="keyword">const</span>* msg) noexcept : type_{NVTX_MESSAGE_TYPE_ASCII}</div>
<div class="line"><a id="l01633" name="l01633"></a><span class="lineno"> 1633</span>  {</div>
<div class="line"><a id="l01634" name="l01634"></a><span class="lineno"> 1634</span>    value_.ascii = msg;</div>
<div class="line"><a id="l01635" name="l01635"></a><span class="lineno"> 1635</span>  }</div>
<div class="line"><a id="l01636" name="l01636"></a><span class="lineno"> 1636</span> </div>
<div class="line"><a id="l01642" name="l01642"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#a0864f7bb6f147a8e45241883fc53d2bf"> 1642</a></span>  <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#a0864f7bb6f147a8e45241883fc53d2bf">message</a>(std::string <span class="keyword">const</span>&amp; msg) noexcept : <a class="code hl_class" href="classnvtx3_1_1v1_1_1message.html">message</a>{msg.c_str()} {}</div>
<div class="line"><a id="l01643" name="l01643"></a><span class="lineno"> 1643</span> </div>
<div class="line"><a id="l01652" name="l01652"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#ad5fcc11a05dfb819fcf3238ae90131a0"> 1652</a></span>  <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#ad5fcc11a05dfb819fcf3238ae90131a0">message</a>(std::string&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l01653" name="l01653"></a><span class="lineno"> 1653</span> </div>
<div class="line"><a id="l01659" name="l01659"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#a15e5e0153c1ccb5db9db7ed35ed61481"> 1659</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#a15e5e0153c1ccb5db9db7ed35ed61481">message</a>(<span class="keywordtype">wchar_t</span> <span class="keyword">const</span>* msg) noexcept : type_{NVTX_MESSAGE_TYPE_UNICODE}</div>
<div class="line"><a id="l01660" name="l01660"></a><span class="lineno"> 1660</span>  {</div>
<div class="line"><a id="l01661" name="l01661"></a><span class="lineno"> 1661</span>    value_.unicode = msg;</div>
<div class="line"><a id="l01662" name="l01662"></a><span class="lineno"> 1662</span>  }</div>
<div class="line"><a id="l01663" name="l01663"></a><span class="lineno"> 1663</span> </div>
<div class="line"><a id="l01669" name="l01669"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#af152cd392b2bd13dd1fd00fbf2d29c09"> 1669</a></span>  <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#af152cd392b2bd13dd1fd00fbf2d29c09">message</a>(std::wstring <span class="keyword">const</span>&amp; msg) noexcept : <a class="code hl_class" href="classnvtx3_1_1v1_1_1message.html">message</a>{msg.c_str()} {}</div>
<div class="line"><a id="l01670" name="l01670"></a><span class="lineno"> 1670</span> </div>
<div class="line"><a id="l01679" name="l01679"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#a3a8b73acb3c9cd2a5d78fe94efb0a9db"> 1679</a></span>  <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#a3a8b73acb3c9cd2a5d78fe94efb0a9db">message</a>(std::wstring&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l01680" name="l01680"></a><span class="lineno"> 1680</span> </div>
<div class="line"><a id="l01689" name="l01689"></a><span class="lineno"> 1689</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> D&gt;</div>
<div class="line"><a id="l01690" name="l01690"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#a2827347a64c6c91518f5191eade74054"> 1690</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#a2827347a64c6c91518f5191eade74054">message</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in&lt;D&gt;</a> <span class="keyword">const</span>&amp; msg) noexcept</div>
<div class="line"><a id="l01691" name="l01691"></a><span class="lineno"> 1691</span>    : type_{NVTX_MESSAGE_TYPE_REGISTERED}</div>
<div class="line"><a id="l01692" name="l01692"></a><span class="lineno"> 1692</span>  {</div>
<div class="line"><a id="l01693" name="l01693"></a><span class="lineno"> 1693</span>    value_.registered = msg.get_handle();</div>
<div class="line"><a id="l01694" name="l01694"></a><span class="lineno"> 1694</span>  }</div>
<div class="line"><a id="l01695" name="l01695"></a><span class="lineno"> 1695</span> </div>
<div class="line"><a id="l01702" name="l01702"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#ad16d6a6518feb8f438faf0dbe052a4ee"> 1702</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#ad16d6a6518feb8f438faf0dbe052a4ee">message</a>(</div>
<div class="line"><a id="l01703" name="l01703"></a><span class="lineno"> 1703</span>    nvtxMessageType_t <span class="keyword">const</span>&amp; type,</div>
<div class="line"><a id="l01704" name="l01704"></a><span class="lineno"> 1704</span>    nvtxMessageValue_t <span class="keyword">const</span>&amp; value) noexcept</div>
<div class="line"><a id="l01705" name="l01705"></a><span class="lineno"> 1705</span>    : type_{type}, value_(value)</div>
<div class="line"><a id="l01706" name="l01706"></a><span class="lineno"> 1706</span>  {</div>
<div class="line"><a id="l01707" name="l01707"></a><span class="lineno"> 1707</span>  }</div>
<div class="line"><a id="l01708" name="l01708"></a><span class="lineno"> 1708</span> </div>
<div class="line"><a id="l01714" name="l01714"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#ab0e7eae70ce91c6f8aa9be048fc146bd"> 1714</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#ab0e7eae70ce91c6f8aa9be048fc146bd">message</a>(nvtxStringHandle_t handle) noexcept</div>
<div class="line"><a id="l01715" name="l01715"></a><span class="lineno"> 1715</span>    : type_{NVTX_MESSAGE_TYPE_REGISTERED}</div>
<div class="line"><a id="l01716" name="l01716"></a><span class="lineno"> 1716</span>  {</div>
<div class="line"><a id="l01717" name="l01717"></a><span class="lineno"> 1717</span>    value_.registered = handle;</div>
<div class="line"><a id="l01718" name="l01718"></a><span class="lineno"> 1718</span>  }</div>
<div class="line"><a id="l01719" name="l01719"></a><span class="lineno"> 1719</span> </div>
<div class="line"><a id="l01724" name="l01724"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#a17d2eaf8f1c653ddf6237425833f3cfc"> 1724</a></span>  <span class="keyword">constexpr</span> value_type <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#a17d2eaf8f1c653ddf6237425833f3cfc">get_value</a>() const noexcept { <span class="keywordflow">return</span> value_; }</div>
<div class="line"><a id="l01725" name="l01725"></a><span class="lineno"> 1725</span> </div>
<div class="line"><a id="l01730" name="l01730"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#a856a7186fd697a92b2a6699a448ffc45"> 1730</a></span>  <span class="keyword">constexpr</span> nvtxMessageType_t <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#a856a7186fd697a92b2a6699a448ffc45">get_type</a>() const noexcept { <span class="keywordflow">return</span> type_; }</div>
<div class="line"><a id="l01731" name="l01731"></a><span class="lineno"> 1731</span> </div>
<div class="line"><a id="l01732" name="l01732"></a><span class="lineno"> 1732</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l01733" name="l01733"></a><span class="lineno"> 1733</span>  nvtxMessageType_t type_{};    </div>
<div class="line"><a id="l01734" name="l01734"></a><span class="lineno"> 1734</span>  nvtxMessageValue_t value_{};  </div>
<div class="line"><a id="l01735" name="l01735"></a><span class="lineno"> 1735</span>};</div>
<div class="line"><a id="l01736" name="l01736"></a><span class="lineno"> 1736</span> </div>
<div class="line"><a id="l01753" name="l01753"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html"> 1753</a></span><span class="keyword">class </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1payload.html">payload</a> {</div>
<div class="line"><a id="l01754" name="l01754"></a><span class="lineno"> 1754</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l01755" name="l01755"></a><span class="lineno"> 1755</span>  <span class="keyword">using </span>value_type = <span class="keyword">typename</span> nvtxEventAttributes_v2::payload_t;</div>
<div class="line"><a id="l01756" name="l01756"></a><span class="lineno"> 1756</span> </div>
<div class="line"><a id="l01762" name="l01762"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html#a4eb0c1e4256db34fa68779a67d26e4ef"> 1762</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1payload.html#a4eb0c1e4256db34fa68779a67d26e4ef">payload</a>(int64_t value) noexcept</div>
<div class="line"><a id="l01763" name="l01763"></a><span class="lineno"> 1763</span>    : type_{NVTX_PAYLOAD_TYPE_INT64}, value_{}</div>
<div class="line"><a id="l01764" name="l01764"></a><span class="lineno"> 1764</span>  {</div>
<div class="line"><a id="l01765" name="l01765"></a><span class="lineno"> 1765</span>    value_.llValue = value;</div>
<div class="line"><a id="l01766" name="l01766"></a><span class="lineno"> 1766</span>  }</div>
<div class="line"><a id="l01767" name="l01767"></a><span class="lineno"> 1767</span> </div>
<div class="line"><a id="l01773" name="l01773"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html#a0351f31362bee4c7222bfa830dc46adf"> 1773</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1payload.html#a0351f31362bee4c7222bfa830dc46adf">payload</a>(int32_t value) noexcept</div>
<div class="line"><a id="l01774" name="l01774"></a><span class="lineno"> 1774</span>    : type_{NVTX_PAYLOAD_TYPE_INT32}, value_{}</div>
<div class="line"><a id="l01775" name="l01775"></a><span class="lineno"> 1775</span>  {</div>
<div class="line"><a id="l01776" name="l01776"></a><span class="lineno"> 1776</span>    value_.iValue = value;</div>
<div class="line"><a id="l01777" name="l01777"></a><span class="lineno"> 1777</span>  }</div>
<div class="line"><a id="l01778" name="l01778"></a><span class="lineno"> 1778</span> </div>
<div class="line"><a id="l01784" name="l01784"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html#afae6410eb17c40079fec46cfa6472ca8"> 1784</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1payload.html#afae6410eb17c40079fec46cfa6472ca8">payload</a>(uint64_t value) noexcept</div>
<div class="line"><a id="l01785" name="l01785"></a><span class="lineno"> 1785</span>    : type_{NVTX_PAYLOAD_TYPE_UNSIGNED_INT64}, value_{}</div>
<div class="line"><a id="l01786" name="l01786"></a><span class="lineno"> 1786</span>  {</div>
<div class="line"><a id="l01787" name="l01787"></a><span class="lineno"> 1787</span>    value_.ullValue = value;</div>
<div class="line"><a id="l01788" name="l01788"></a><span class="lineno"> 1788</span>  }</div>
<div class="line"><a id="l01789" name="l01789"></a><span class="lineno"> 1789</span> </div>
<div class="line"><a id="l01795" name="l01795"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html#a3755fd622f2552519d77f83d2f41950d"> 1795</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1payload.html#a3755fd622f2552519d77f83d2f41950d">payload</a>(uint32_t value) noexcept</div>
<div class="line"><a id="l01796" name="l01796"></a><span class="lineno"> 1796</span>    : type_{NVTX_PAYLOAD_TYPE_UNSIGNED_INT32}, value_{}</div>
<div class="line"><a id="l01797" name="l01797"></a><span class="lineno"> 1797</span>  {</div>
<div class="line"><a id="l01798" name="l01798"></a><span class="lineno"> 1798</span>    value_.uiValue = value;</div>
<div class="line"><a id="l01799" name="l01799"></a><span class="lineno"> 1799</span>  }</div>
<div class="line"><a id="l01800" name="l01800"></a><span class="lineno"> 1800</span> </div>
<div class="line"><a id="l01807" name="l01807"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html#a69cc4703669a5c973fcac94b998b1677"> 1807</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1payload.html#a69cc4703669a5c973fcac94b998b1677">payload</a>(<span class="keywordtype">float</span> value) noexcept</div>
<div class="line"><a id="l01808" name="l01808"></a><span class="lineno"> 1808</span>    : type_{NVTX_PAYLOAD_TYPE_FLOAT}, value_{}</div>
<div class="line"><a id="l01809" name="l01809"></a><span class="lineno"> 1809</span>  {</div>
<div class="line"><a id="l01810" name="l01810"></a><span class="lineno"> 1810</span>    value_.fValue = value;</div>
<div class="line"><a id="l01811" name="l01811"></a><span class="lineno"> 1811</span>  }</div>
<div class="line"><a id="l01812" name="l01812"></a><span class="lineno"> 1812</span> </div>
<div class="line"><a id="l01819" name="l01819"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html#ab2f4ae9a528d1ba77a99aa6a334123ed"> 1819</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1payload.html#ab2f4ae9a528d1ba77a99aa6a334123ed">payload</a>(<span class="keywordtype">double</span> value) noexcept</div>
<div class="line"><a id="l01820" name="l01820"></a><span class="lineno"> 1820</span>    : type_{NVTX_PAYLOAD_TYPE_DOUBLE}, value_{}</div>
<div class="line"><a id="l01821" name="l01821"></a><span class="lineno"> 1821</span>  {</div>
<div class="line"><a id="l01822" name="l01822"></a><span class="lineno"> 1822</span>    value_.dValue = value;</div>
<div class="line"><a id="l01823" name="l01823"></a><span class="lineno"> 1823</span>  }</div>
<div class="line"><a id="l01824" name="l01824"></a><span class="lineno"> 1824</span> </div>
<div class="line"><a id="l01831" name="l01831"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html#a2c3609dc8a8e6ce0ddfda5e96113ea53"> 1831</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1payload.html#a2c3609dc8a8e6ce0ddfda5e96113ea53">payload</a>(</div>
<div class="line"><a id="l01832" name="l01832"></a><span class="lineno"> 1832</span>    nvtxPayloadType_t <span class="keyword">const</span>&amp; type,</div>
<div class="line"><a id="l01833" name="l01833"></a><span class="lineno"> 1833</span>    value_type <span class="keyword">const</span>&amp; value) noexcept</div>
<div class="line"><a id="l01834" name="l01834"></a><span class="lineno"> 1834</span>    : type_{type}, value_(value)</div>
<div class="line"><a id="l01835" name="l01835"></a><span class="lineno"> 1835</span>  {</div>
<div class="line"><a id="l01836" name="l01836"></a><span class="lineno"> 1836</span>  }</div>
<div class="line"><a id="l01837" name="l01837"></a><span class="lineno"> 1837</span> </div>
<div class="line"><a id="l01842" name="l01842"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html#abb1094dc4fa3abc332ed18133fb2164e"> 1842</a></span>  <span class="keyword">constexpr</span> value_type <a class="code hl_function" href="classnvtx3_1_1v1_1_1payload.html#abb1094dc4fa3abc332ed18133fb2164e">get_value</a>() const noexcept { <span class="keywordflow">return</span> value_; }</div>
<div class="line"><a id="l01843" name="l01843"></a><span class="lineno"> 1843</span> </div>
<div class="line"><a id="l01848" name="l01848"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html#aeb3c21614c98acab62d0007175093172"> 1848</a></span>  <span class="keyword">constexpr</span> nvtxPayloadType_t <a class="code hl_function" href="classnvtx3_1_1v1_1_1payload.html#aeb3c21614c98acab62d0007175093172">get_type</a>() const noexcept { <span class="keywordflow">return</span> type_; }</div>
<div class="line"><a id="l01849" name="l01849"></a><span class="lineno"> 1849</span> </div>
<div class="line"><a id="l01850" name="l01850"></a><span class="lineno"> 1850</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l01851" name="l01851"></a><span class="lineno"> 1851</span>  nvtxPayloadType_t type_;  </div>
<div class="line"><a id="l01852" name="l01852"></a><span class="lineno"> 1852</span>  value_type value_;        </div>
<div class="line"><a id="l01853" name="l01853"></a><span class="lineno"> 1853</span>};</div>
<div class="line"><a id="l01854" name="l01854"></a><span class="lineno"> 1854</span> </div>
<div class="line"><a id="l01913" name="l01913"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1event__attributes.html"> 1913</a></span><span class="keyword">class </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> {</div>
<div class="line"><a id="l01914" name="l01914"></a><span class="lineno"> 1914</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l01915" name="l01915"></a><span class="lineno"> 1915</span>  <span class="keyword">using </span>value_type = nvtxEventAttributes_t;</div>
<div class="line"><a id="l01916" name="l01916"></a><span class="lineno"> 1916</span> </div>
<div class="line"><a id="l01921" name="l01921"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1event__attributes.html#af9b06fcd1d0bb4b8739009b3b00ef34d"> 1921</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1event__attributes.html#af9b06fcd1d0bb4b8739009b3b00ef34d">event_attributes</a>() noexcept</div>
<div class="line"><a id="l01922" name="l01922"></a><span class="lineno"> 1922</span>    : attributes_{</div>
<div class="line"><a id="l01923" name="l01923"></a><span class="lineno"> 1923</span>        NVTX_VERSION,                   <span class="comment">// version</span></div>
<div class="line"><a id="l01924" name="l01924"></a><span class="lineno"> 1924</span>        <span class="keyword">sizeof</span>(nvtxEventAttributes_t),  <span class="comment">// size</span></div>
<div class="line"><a id="l01925" name="l01925"></a><span class="lineno"> 1925</span>        0,                              <span class="comment">// category</span></div>
<div class="line"><a id="l01926" name="l01926"></a><span class="lineno"> 1926</span>        NVTX_COLOR_UNKNOWN,             <span class="comment">// color type</span></div>
<div class="line"><a id="l01927" name="l01927"></a><span class="lineno"> 1927</span>        0,                              <span class="comment">// color value</span></div>
<div class="line"><a id="l01928" name="l01928"></a><span class="lineno"> 1928</span>        NVTX_PAYLOAD_UNKNOWN,           <span class="comment">// payload type</span></div>
<div class="line"><a id="l01929" name="l01929"></a><span class="lineno"> 1929</span>        0,                              <span class="comment">// reserved 4B</span></div>
<div class="line"><a id="l01930" name="l01930"></a><span class="lineno"> 1930</span>        0,                              <span class="comment">// payload value (union)</span></div>
<div class="line"><a id="l01931" name="l01931"></a><span class="lineno"> 1931</span>        NVTX_MESSAGE_UNKNOWN,           <span class="comment">// message type</span></div>
<div class="line"><a id="l01932" name="l01932"></a><span class="lineno"> 1932</span>        0                               <span class="comment">// message value (union)</span></div>
<div class="line"><a id="l01933" name="l01933"></a><span class="lineno"> 1933</span>      }</div>
<div class="line"><a id="l01934" name="l01934"></a><span class="lineno"> 1934</span>  {</div>
<div class="line"><a id="l01935" name="l01935"></a><span class="lineno"> 1935</span>  }</div>
<div class="line"><a id="l01936" name="l01936"></a><span class="lineno"> 1936</span> </div>
<div class="line"><a id="l01944" name="l01944"></a><span class="lineno"> 1944</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span>... Args&gt;</div>
<div class="line"><a id="l01945" name="l01945"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1event__attributes.html#a27ef8784b11bb620cd597ea55a781e02"> 1945</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1event__attributes.html#a27ef8784b11bb620cd597ea55a781e02">event_attributes</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a> <span class="keyword">const</span>&amp; c, Args <span class="keyword">const</span>&amp;... args) noexcept</div>
<div class="line"><a id="l01946" name="l01946"></a><span class="lineno"> 1946</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>(args...)</div>
<div class="line"><a id="l01947" name="l01947"></a><span class="lineno"> 1947</span>  {</div>
<div class="line"><a id="l01948" name="l01948"></a><span class="lineno"> 1948</span>    attributes_.category = c.get_id();</div>
<div class="line"><a id="l01949" name="l01949"></a><span class="lineno"> 1949</span>  }</div>
<div class="line"><a id="l01950" name="l01950"></a><span class="lineno"> 1950</span> </div>
<div class="line"><a id="l01958" name="l01958"></a><span class="lineno"> 1958</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span>... Args&gt;</div>
<div class="line"><a id="l01959" name="l01959"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1event__attributes.html#a14e581407cea05235f0f814f4043c656"> 1959</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1event__attributes.html#a14e581407cea05235f0f814f4043c656">event_attributes</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a> <span class="keyword">const</span>&amp; c, Args <span class="keyword">const</span>&amp;... args) noexcept</div>
<div class="line"><a id="l01960" name="l01960"></a><span class="lineno"> 1960</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>(args...)</div>
<div class="line"><a id="l01961" name="l01961"></a><span class="lineno"> 1961</span>  {</div>
<div class="line"><a id="l01962" name="l01962"></a><span class="lineno"> 1962</span>    attributes_.color     = c.get_value();</div>
<div class="line"><a id="l01963" name="l01963"></a><span class="lineno"> 1963</span>    attributes_.colorType = c.get_type();</div>
<div class="line"><a id="l01964" name="l01964"></a><span class="lineno"> 1964</span>  }</div>
<div class="line"><a id="l01965" name="l01965"></a><span class="lineno"> 1965</span> </div>
<div class="line"><a id="l01973" name="l01973"></a><span class="lineno"> 1973</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span>... Args&gt;</div>
<div class="line"><a id="l01974" name="l01974"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1event__attributes.html#ac16fc2b8249f503ff89ee14a9fdb63fd"> 1974</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1event__attributes.html#ac16fc2b8249f503ff89ee14a9fdb63fd">event_attributes</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1payload.html">payload</a> <span class="keyword">const</span>&amp; p, Args <span class="keyword">const</span>&amp;... args) noexcept</div>
<div class="line"><a id="l01975" name="l01975"></a><span class="lineno"> 1975</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>(args...)</div>
<div class="line"><a id="l01976" name="l01976"></a><span class="lineno"> 1976</span>  {</div>
<div class="line"><a id="l01977" name="l01977"></a><span class="lineno"> 1977</span>    attributes_.payload     = p.get_value();</div>
<div class="line"><a id="l01978" name="l01978"></a><span class="lineno"> 1978</span>    attributes_.payloadType = p.get_type();</div>
<div class="line"><a id="l01979" name="l01979"></a><span class="lineno"> 1979</span>  }</div>
<div class="line"><a id="l01980" name="l01980"></a><span class="lineno"> 1980</span> </div>
<div class="line"><a id="l01988" name="l01988"></a><span class="lineno"> 1988</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span>... Args&gt;</div>
<div class="line"><a id="l01989" name="l01989"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1event__attributes.html#acccdd768a4fbe2234d151e8a8443f44f"> 1989</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1event__attributes.html#acccdd768a4fbe2234d151e8a8443f44f">event_attributes</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1message.html">message</a> <span class="keyword">const</span>&amp; m, Args <span class="keyword">const</span>&amp;... args) noexcept</div>
<div class="line"><a id="l01990" name="l01990"></a><span class="lineno"> 1990</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>(args...)</div>
<div class="line"><a id="l01991" name="l01991"></a><span class="lineno"> 1991</span>  {</div>
<div class="line"><a id="l01992" name="l01992"></a><span class="lineno"> 1992</span>    attributes_.message     = m.get_value();</div>
<div class="line"><a id="l01993" name="l01993"></a><span class="lineno"> 1993</span>    attributes_.messageType = m.get_type();</div>
<div class="line"><a id="l01994" name="l01994"></a><span class="lineno"> 1994</span>  }</div>
<div class="line"><a id="l01995" name="l01995"></a><span class="lineno"> 1995</span> </div>
<div class="line"><a id="l01996" name="l01996"></a><span class="lineno"> 1996</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">~event_attributes</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01997" name="l01997"></a><span class="lineno"> 1997</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> <span class="keyword">const</span>&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01998" name="l01998"></a><span class="lineno"> 1998</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> <span class="keyword">const</span>&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01999" name="l01999"></a><span class="lineno"> 1999</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l02000" name="l02000"></a><span class="lineno"> 2000</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l02001" name="l02001"></a><span class="lineno"> 2001</span> </div>
<div class="line"><a id="l02006" name="l02006"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1event__attributes.html#aa060dd3c07034ccef18c2b48ec99f90c"> 2006</a></span>  <span class="keyword">constexpr</span> value_type <span class="keyword">const</span>* <a class="code hl_function" href="classnvtx3_1_1v1_1_1event__attributes.html#aa060dd3c07034ccef18c2b48ec99f90c">get</a>() const noexcept { <span class="keywordflow">return</span> &amp;attributes_; }</div>
<div class="line"><a id="l02007" name="l02007"></a><span class="lineno"> 2007</span> </div>
<div class="line"><a id="l02008" name="l02008"></a><span class="lineno"> 2008</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l02009" name="l02009"></a><span class="lineno"> 2009</span>  value_type attributes_{};  </div>
<div class="line"><a id="l02010" name="l02010"></a><span class="lineno"> 2010</span>};</div>
<div class="line"><a id="l02011" name="l02011"></a><span class="lineno"> 2011</span> </div>
<div class="line"><a id="l02059" name="l02059"></a><span class="lineno"> 2059</span><span class="keyword">template</span> &lt;<span class="keyword">class</span> D = domain::global&gt;</div>
<div class="line"><a id="l02060" name="l02060"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1scoped__range__in.html"> 2060</a></span><span class="keyword">class </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a> {</div>
<div class="line"><a id="l02061" name="l02061"></a><span class="lineno"> 2061</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l02076" name="l02076"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1scoped__range__in.html#a25eff24202b7021ced3481b29c1768c8"> 2076</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1scoped__range__in.html#a25eff24202b7021ced3481b29c1768c8">scoped_range_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> <span class="keyword">const</span>&amp; attr) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02077" name="l02077"></a><span class="lineno"> 2077</span>  {</div>
<div class="line"><a id="l02078" name="l02078"></a><span class="lineno"> 2078</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02079" name="l02079"></a><span class="lineno"> 2079</span>    nvtxDomainRangePushEx(domain::get&lt;D&gt;(), attr.get());</div>
<div class="line"><a id="l02080" name="l02080"></a><span class="lineno"> 2080</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02081" name="l02081"></a><span class="lineno"> 2081</span>    (void)attr;</div>
<div class="line"><a id="l02082" name="l02082"></a><span class="lineno"> 2082</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02083" name="l02083"></a><span class="lineno"> 2083</span>  }</div>
<div class="line"><a id="l02084" name="l02084"></a><span class="lineno"> 2084</span> </div>
<div class="line"><a id="l02105" name="l02105"></a><span class="lineno"> 2105</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span>... Args&gt;</div>
<div class="line"><a id="l02106" name="l02106"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1scoped__range__in.html#a53b3c3d95b29dfc31db2df290804df65"> 2106</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1scoped__range__in.html#a53b3c3d95b29dfc31db2df290804df65">scoped_range_in</a>(Args <span class="keyword">const</span>&amp;... args) noexcept</div>
<div class="line"><a id="l02107" name="l02107"></a><span class="lineno"> 2107</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a>{<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>{args...}}</div>
<div class="line"><a id="l02108" name="l02108"></a><span class="lineno"> 2108</span>  {</div>
<div class="line"><a id="l02109" name="l02109"></a><span class="lineno"> 2109</span>  }</div>
<div class="line"><a id="l02110" name="l02110"></a><span class="lineno"> 2110</span> </div>
<div class="line"><a id="l02116" name="l02116"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1scoped__range__in.html#a72417f5a5f0ecf2b67551880bdd28955"> 2116</a></span>  <a class="code hl_function" href="classnvtx3_1_1v1_1_1scoped__range__in.html#a72417f5a5f0ecf2b67551880bdd28955">scoped_range_in</a>() noexcept : <a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a>{<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>{}} {}</div>
<div class="line"><a id="l02117" name="l02117"></a><span class="lineno"> 2117</span> </div>
<div class="line"><a id="l02124" name="l02124"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1scoped__range__in.html#aaa2e0c47375a578c7f772501905b8d22"> 2124</a></span>  <span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span>(std::size_t) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02125" name="l02125"></a><span class="lineno"> 2125</span> </div>
<div class="line"><a id="l02126" name="l02126"></a><span class="lineno"> 2126</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02127" name="l02127"></a><span class="lineno"> 2127</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02128" name="l02128"></a><span class="lineno"> 2128</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a>&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02129" name="l02129"></a><span class="lineno"> 2129</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a>&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02130" name="l02130"></a><span class="lineno"> 2130</span> </div>
<div class="line"><a id="l02134" name="l02134"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1scoped__range__in.html#aebf31fd1548c4bf5196332db9ee90fb1"> 2134</a></span>  <a class="code hl_function" href="classnvtx3_1_1v1_1_1scoped__range__in.html#aebf31fd1548c4bf5196332db9ee90fb1">~scoped_range_in</a>() noexcept</div>
<div class="line"><a id="l02135" name="l02135"></a><span class="lineno"> 2135</span>  {</div>
<div class="line"><a id="l02136" name="l02136"></a><span class="lineno"> 2136</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02137" name="l02137"></a><span class="lineno"> 2137</span>    nvtxDomainRangePop(domain::get&lt;D&gt;());</div>
<div class="line"><a id="l02138" name="l02138"></a><span class="lineno"> 2138</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02139" name="l02139"></a><span class="lineno"> 2139</span>  }</div>
<div class="line"><a id="l02140" name="l02140"></a><span class="lineno"> 2140</span>};</div>
<div class="line"><a id="l02141" name="l02141"></a><span class="lineno"> 2141</span> </div>
<div class="line"><a id="l02146" name="l02146"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a8e124f3d438e512b586415f1ac2b9677"> 2146</a></span><span class="keyword">using </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range</a> = <a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in&lt;domain::global&gt;</a>;</div>
<div class="line"><a id="l02147" name="l02147"></a><span class="lineno"> 2147</span> </div>
<div class="line"><a id="l02148" name="l02148"></a><span class="lineno"> 2148</span><span class="keyword">namespace </span>detail {</div>
<div class="line"><a id="l02149" name="l02149"></a><span class="lineno"> 2149</span> </div>
<div class="line"><a id="l02151" name="l02151"></a><span class="lineno"> 2151</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = domain::global&gt;</div>
<div class="line"><a id="l02152" name="l02152"></a><span class="lineno"> 2152</span><span class="keyword">class </span>optional_scoped_range_in</div>
<div class="line"><a id="l02153" name="l02153"></a><span class="lineno"> 2153</span>{</div>
<div class="line"><a id="l02154" name="l02154"></a><span class="lineno"> 2154</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l02155" name="l02155"></a><span class="lineno"> 2155</span>  optional_scoped_range_in() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l02156" name="l02156"></a><span class="lineno"> 2156</span> </div>
<div class="line"><a id="l02157" name="l02157"></a><span class="lineno"> 2157</span>  <span class="keywordtype">void</span> begin(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> <span class="keyword">const</span>&amp; attr) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02158" name="l02158"></a><span class="lineno"> 2158</span>  {</div>
<div class="line"><a id="l02159" name="l02159"></a><span class="lineno"> 2159</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02160" name="l02160"></a><span class="lineno"> 2160</span>    <span class="comment">// This class is not meant to be part of the public NVTX C++ API and should</span></div>
<div class="line"><a id="l02161" name="l02161"></a><span class="lineno"> 2161</span>    <span class="comment">// only be used in the `NVTX3_FUNC_RANGE_IF` and `NVTX3_FUNC_RANGE_IF_IN`</span></div>
<div class="line"><a id="l02162" name="l02162"></a><span class="lineno"> 2162</span>    <span class="comment">// macros. However, to prevent developers from misusing this class, make</span></div>
<div class="line"><a id="l02163" name="l02163"></a><span class="lineno"> 2163</span>    <span class="comment">// sure to not start multiple ranges.</span></div>
<div class="line"><a id="l02164" name="l02164"></a><span class="lineno"> 2164</span>    <span class="keywordflow">if</span> (initialized) { <span class="keywordflow">return</span>; }</div>
<div class="line"><a id="l02165" name="l02165"></a><span class="lineno"> 2165</span> </div>
<div class="line"><a id="l02166" name="l02166"></a><span class="lineno"> 2166</span>    nvtxDomainRangePushEx(domain::get&lt;D&gt;(), attr.<a class="code hl_function" href="classnvtx3_1_1v1_1_1event__attributes.html#aa060dd3c07034ccef18c2b48ec99f90c">get</a>());</div>
<div class="line"><a id="l02167" name="l02167"></a><span class="lineno"> 2167</span>    initialized = <span class="keyword">true</span>;</div>
<div class="line"><a id="l02168" name="l02168"></a><span class="lineno"> 2168</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02169" name="l02169"></a><span class="lineno"> 2169</span>  }</div>
<div class="line"><a id="l02170" name="l02170"></a><span class="lineno"> 2170</span> </div>
<div class="line"><a id="l02171" name="l02171"></a><span class="lineno"> 2171</span>  ~optional_scoped_range_in() <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02172" name="l02172"></a><span class="lineno"> 2172</span>  {</div>
<div class="line"><a id="l02173" name="l02173"></a><span class="lineno"> 2173</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02174" name="l02174"></a><span class="lineno"> 2174</span>    <span class="keywordflow">if</span> (initialized) { nvtxDomainRangePop(domain::get&lt;D&gt;()); }</div>
<div class="line"><a id="l02175" name="l02175"></a><span class="lineno"> 2175</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02176" name="l02176"></a><span class="lineno"> 2176</span>  }</div>
<div class="line"><a id="l02177" name="l02177"></a><span class="lineno"> 2177</span> </div>
<div class="line"><a id="l02178" name="l02178"></a><span class="lineno"> 2178</span>  <span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span>(std::size_t) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02179" name="l02179"></a><span class="lineno"> 2179</span>  optional_scoped_range_in(optional_scoped_range_in <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02180" name="l02180"></a><span class="lineno"> 2180</span>  optional_scoped_range_in&amp; operator=(optional_scoped_range_in <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02181" name="l02181"></a><span class="lineno"> 2181</span>  optional_scoped_range_in(optional_scoped_range_in&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02182" name="l02182"></a><span class="lineno"> 2182</span>  optional_scoped_range_in&amp; operator=(optional_scoped_range_in&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02183" name="l02183"></a><span class="lineno"> 2183</span> </div>
<div class="line"><a id="l02184" name="l02184"></a><span class="lineno"> 2184</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l02185" name="l02185"></a><span class="lineno"> 2185</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02186" name="l02186"></a><span class="lineno"> 2186</span>  <span class="keywordtype">bool</span> initialized = <span class="keyword">false</span>;</div>
<div class="line"><a id="l02187" name="l02187"></a><span class="lineno"> 2187</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02188" name="l02188"></a><span class="lineno"> 2188</span>};</div>
<div class="line"><a id="l02190" name="l02190"></a><span class="lineno"> 2190</span> </div>
<div class="line"><a id="l02191" name="l02191"></a><span class="lineno"> 2191</span>} <span class="comment">// namespace detail</span></div>
<div class="line"><a id="l02192" name="l02192"></a><span class="lineno"> 2192</span> </div>
<div class="line"><a id="l02199" name="l02199"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1range__handle.html"> 2199</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> {</div>
<div class="line"><a id="l02201" name="l02201"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1range__handle.html#a77be25af5cf21fde96c18bf30727f109"> 2201</a></span>  <span class="keyword">using </span><a class="code hl_typedef" href="structnvtx3_1_1v1_1_1range__handle.html#a77be25af5cf21fde96c18bf30727f109">value_type</a> = nvtxRangeId_t;</div>
<div class="line"><a id="l02202" name="l02202"></a><span class="lineno"> 2202</span> </div>
<div class="line"><a id="l02203" name="l02203"></a><span class="lineno"> 2203</span> </div>
<div class="line"><a id="l02208" name="l02208"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1range__handle.html#a268da1820c8b8c63210123f0eca23b4d"> 2208</a></span>  <span class="keyword">constexpr</span> <span class="keyword">explicit</span> <a class="code hl_function" href="structnvtx3_1_1v1_1_1range__handle.html#a268da1820c8b8c63210123f0eca23b4d">range_handle</a>(<a class="code hl_typedef" href="structnvtx3_1_1v1_1_1range__handle.html#a77be25af5cf21fde96c18bf30727f109">value_type</a> <span class="keywordtype">id</span>) noexcept : _range_id{<span class="keywordtype">id</span>} {}</div>
<div class="line"><a id="l02209" name="l02209"></a><span class="lineno"> 2209</span> </div>
<div class="line"><a id="l02217" name="l02217"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1range__handle.html#a5d0f33132aa6782d681656040dd6ce7f"> 2217</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="structnvtx3_1_1v1_1_1range__handle.html#a5d0f33132aa6782d681656040dd6ce7f">range_handle</a>() noexcept = default;</div>
<div class="line"><a id="l02218" name="l02218"></a><span class="lineno"> 2218</span> </div>
<div class="line"><a id="l02230" name="l02230"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1range__handle.html#ab622758fb9654b36c018b0c9aa91679a"> 2230</a></span>  constexpr explicit operator <span class="keywordtype">bool</span>() const noexcept { <span class="keywordflow">return</span> get_value() != null_range_id; };</div>
<div class="line"><a id="l02231" name="l02231"></a><span class="lineno"> 2231</span> </div>
<div class="line"><a id="l02238" name="l02238"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1range__handle.html#acaef1aa87e8c7ce936b0e93040b8ad3a"> 2238</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="structnvtx3_1_1v1_1_1range__handle.html#acaef1aa87e8c7ce936b0e93040b8ad3a">range_handle</a>(std::nullptr_t) <span class="keyword">noexcept</span> {}</div>
<div class="line"><a id="l02239" name="l02239"></a><span class="lineno"> 2239</span> </div>
<div class="line"><a id="l02245" name="l02245"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1range__handle.html#a3919493cff16228eed36c9a3c3f84de6"> 2245</a></span>  <span class="keyword">constexpr</span> <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1range__handle.html#a77be25af5cf21fde96c18bf30727f109">value_type</a> <a class="code hl_function" href="structnvtx3_1_1v1_1_1range__handle.html#a3919493cff16228eed36c9a3c3f84de6">get_value</a>() const noexcept { <span class="keywordflow">return</span> _range_id; }</div>
<div class="line"><a id="l02246" name="l02246"></a><span class="lineno"> 2246</span> </div>
<div class="line"><a id="l02247" name="l02247"></a><span class="lineno"> 2247</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l02249" name="l02249"></a><span class="lineno"> 2249</span>  <span class="keyword">static</span> <span class="keyword">constexpr</span> value_type null_range_id = nvtxRangeId_t{0};</div>
<div class="line"><a id="l02250" name="l02250"></a><span class="lineno"> 2250</span> </div>
<div class="line"><a id="l02251" name="l02251"></a><span class="lineno"> 2251</span>  value_type _range_id{null_range_id};  </div>
<div class="line"><a id="l02252" name="l02252"></a><span class="lineno"> 2252</span>};</div>
<div class="line"><a id="l02253" name="l02253"></a><span class="lineno"> 2253</span> </div>
<div class="line"><a id="l02260" name="l02260"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#aa2016d0df543887a838402751356433d"> 2260</a></span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="nvtx3_8hpp.html#aa2016d0df543887a838402751356433d">operator==</a>(<a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> lhs, <a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> rhs) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02261" name="l02261"></a><span class="lineno"> 2261</span>{</div>
<div class="line"><a id="l02262" name="l02262"></a><span class="lineno"> 2262</span>  <span class="keywordflow">return</span> lhs.get_value() == rhs.get_value();</div>
<div class="line"><a id="l02263" name="l02263"></a><span class="lineno"> 2263</span>}</div>
<div class="line"><a id="l02264" name="l02264"></a><span class="lineno"> 2264</span> </div>
<div class="line"><a id="l02271" name="l02271"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#aaaae235fe6980a2ac95eb4f35d6e9ad1"> 2271</a></span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="nvtx3_8hpp.html#aaaae235fe6980a2ac95eb4f35d6e9ad1">operator!=</a>(<a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> lhs, <a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> rhs) <span class="keyword">noexcept</span> { <span class="keywordflow">return</span> !(lhs == rhs); }</div>
<div class="line"><a id="l02272" name="l02272"></a><span class="lineno"> 2272</span> </div>
<div class="line"><a id="l02302" name="l02302"></a><span class="lineno"> 2302</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = domain::global&gt;</div>
<div class="line"><a id="l02303" name="l02303"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a58d393b13ffc2fe5f44b0171be0bec23"> 2303</a></span><span class="keyword">inline</span> <a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> <a class="code hl_function" href="nvtx3_8hpp.html#a58d393b13ffc2fe5f44b0171be0bec23">start_range_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> <span class="keyword">const</span>&amp; attr) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02304" name="l02304"></a><span class="lineno"> 2304</span>{</div>
<div class="line"><a id="l02305" name="l02305"></a><span class="lineno"> 2305</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02306" name="l02306"></a><span class="lineno"> 2306</span>  <span class="keywordflow">return</span> <a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a>{nvtxDomainRangeStartEx(domain::get&lt;D&gt;(), attr.get())};</div>
<div class="line"><a id="l02307" name="l02307"></a><span class="lineno"> 2307</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02308" name="l02308"></a><span class="lineno"> 2308</span>  (void)attr;</div>
<div class="line"><a id="l02309" name="l02309"></a><span class="lineno"> 2309</span>  <span class="keywordflow">return</span> {};</div>
<div class="line"><a id="l02310" name="l02310"></a><span class="lineno"> 2310</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02311" name="l02311"></a><span class="lineno"> 2311</span>}</div>
<div class="line"><a id="l02312" name="l02312"></a><span class="lineno"> 2312</span> </div>
<div class="line"><a id="l02343" name="l02343"></a><span class="lineno"> 2343</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = domain::global, <span class="keyword">typename</span>... Args&gt;</div>
<div class="line"><a id="l02344" name="l02344"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a277b16a1aadc6e8b40e720847b5fb124"> 2344</a></span><span class="keyword">inline</span> <a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> <a class="code hl_function" href="nvtx3_8hpp.html#a58d393b13ffc2fe5f44b0171be0bec23">start_range_in</a>(Args <span class="keyword">const</span>&amp;... args) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02345" name="l02345"></a><span class="lineno"> 2345</span>{</div>
<div class="line"><a id="l02346" name="l02346"></a><span class="lineno"> 2346</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02347" name="l02347"></a><span class="lineno"> 2347</span>  <span class="keywordflow">return</span> start_range_in&lt;D&gt;(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>{args...});</div>
<div class="line"><a id="l02348" name="l02348"></a><span class="lineno"> 2348</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02349" name="l02349"></a><span class="lineno"> 2349</span>  <span class="keywordflow">return</span> {};</div>
<div class="line"><a id="l02350" name="l02350"></a><span class="lineno"> 2350</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02351" name="l02351"></a><span class="lineno"> 2351</span>}</div>
<div class="line"><a id="l02352" name="l02352"></a><span class="lineno"> 2352</span> </div>
<div class="line"><a id="l02379" name="l02379"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a944d0beb92c70e5d3842c5dc4fca81ec"> 2379</a></span><span class="keyword">inline</span> <a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> <a class="code hl_function" href="nvtx3_8hpp.html#a944d0beb92c70e5d3842c5dc4fca81ec">start_range</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> <span class="keyword">const</span>&amp; attr) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02380" name="l02380"></a><span class="lineno"> 2380</span>{</div>
<div class="line"><a id="l02381" name="l02381"></a><span class="lineno"> 2381</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02382" name="l02382"></a><span class="lineno"> 2382</span>  <span class="keywordflow">return</span> start_range_in&lt;domain::global&gt;(attr);</div>
<div class="line"><a id="l02383" name="l02383"></a><span class="lineno"> 2383</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02384" name="l02384"></a><span class="lineno"> 2384</span>  (void)attr;</div>
<div class="line"><a id="l02385" name="l02385"></a><span class="lineno"> 2385</span>  <span class="keywordflow">return</span> {};</div>
<div class="line"><a id="l02386" name="l02386"></a><span class="lineno"> 2386</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02387" name="l02387"></a><span class="lineno"> 2387</span>}</div>
<div class="line"><a id="l02388" name="l02388"></a><span class="lineno"> 2388</span> </div>
<div class="line"><a id="l02416" name="l02416"></a><span class="lineno"> 2416</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span>... Args&gt;</div>
<div class="line"><a id="l02417" name="l02417"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a7484c890617a91bbbb998b793b59584e"> 2417</a></span><span class="keyword">inline</span> <a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> <a class="code hl_function" href="nvtx3_8hpp.html#a944d0beb92c70e5d3842c5dc4fca81ec">start_range</a>(Args <span class="keyword">const</span>&amp;... args) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02418" name="l02418"></a><span class="lineno"> 2418</span>{</div>
<div class="line"><a id="l02419" name="l02419"></a><span class="lineno"> 2419</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02420" name="l02420"></a><span class="lineno"> 2420</span>  <span class="keywordflow">return</span> start_range_in&lt;domain::global&gt;(args...);</div>
<div class="line"><a id="l02421" name="l02421"></a><span class="lineno"> 2421</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02422" name="l02422"></a><span class="lineno"> 2422</span>  <span class="keywordflow">return</span> {};</div>
<div class="line"><a id="l02423" name="l02423"></a><span class="lineno"> 2423</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02424" name="l02424"></a><span class="lineno"> 2424</span>}</div>
<div class="line"><a id="l02425" name="l02425"></a><span class="lineno"> 2425</span> </div>
<div class="line"><a id="l02441" name="l02441"></a><span class="lineno"> 2441</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = domain::global&gt;</div>
<div class="line"><a id="l02442" name="l02442"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a0ef24a4252e5cc6267766410a03dcebb"> 2442</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="nvtx3_8hpp.html#a0ef24a4252e5cc6267766410a03dcebb">end_range_in</a>(<a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> r) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02443" name="l02443"></a><span class="lineno"> 2443</span>{</div>
<div class="line"><a id="l02444" name="l02444"></a><span class="lineno"> 2444</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02445" name="l02445"></a><span class="lineno"> 2445</span>  nvtxDomainRangeEnd(domain::get&lt;D&gt;(), r.get_value());</div>
<div class="line"><a id="l02446" name="l02446"></a><span class="lineno"> 2446</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02447" name="l02447"></a><span class="lineno"> 2447</span>  (void)r;</div>
<div class="line"><a id="l02448" name="l02448"></a><span class="lineno"> 2448</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02449" name="l02449"></a><span class="lineno"> 2449</span>}</div>
<div class="line"><a id="l02450" name="l02450"></a><span class="lineno"> 2450</span> </div>
<div class="line"><a id="l02464" name="l02464"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#aec1adbeb9e44752027d2ede89f1f0dba"> 2464</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="nvtx3_8hpp.html#aec1adbeb9e44752027d2ede89f1f0dba">end_range</a>(<a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> r) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02465" name="l02465"></a><span class="lineno"> 2465</span>{</div>
<div class="line"><a id="l02466" name="l02466"></a><span class="lineno"> 2466</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02467" name="l02467"></a><span class="lineno"> 2467</span>  end_range_in&lt;domain::global&gt;(r);</div>
<div class="line"><a id="l02468" name="l02468"></a><span class="lineno"> 2468</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02469" name="l02469"></a><span class="lineno"> 2469</span>  (void)r;</div>
<div class="line"><a id="l02470" name="l02470"></a><span class="lineno"> 2470</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02471" name="l02471"></a><span class="lineno"> 2471</span>}</div>
<div class="line"><a id="l02472" name="l02472"></a><span class="lineno"> 2472</span> </div>
<div class="line"><a id="l02494" name="l02494"></a><span class="lineno"> 2494</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = domain::global&gt;</div>
<div class="line"><a id="l02495" name="l02495"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1unique__range__in.html"> 2495</a></span><span class="keyword">class </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a> {</div>
<div class="line"><a id="l02496" name="l02496"></a><span class="lineno"> 2496</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l02510" name="l02510"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1unique__range__in.html#adcf350963f4c071aed55c6c7315847d1"> 2510</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1unique__range__in.html#adcf350963f4c071aed55c6c7315847d1">unique_range_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> <span class="keyword">const</span>&amp; attr) noexcept</div>
<div class="line"><a id="l02511" name="l02511"></a><span class="lineno"> 2511</span>    : handle_{start_range_in&lt;D&gt;(attr)}</div>
<div class="line"><a id="l02512" name="l02512"></a><span class="lineno"> 2512</span>  {</div>
<div class="line"><a id="l02513" name="l02513"></a><span class="lineno"> 2513</span>  }</div>
<div class="line"><a id="l02514" name="l02514"></a><span class="lineno"> 2514</span> </div>
<div class="line"><a id="l02534" name="l02534"></a><span class="lineno"> 2534</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span>... Args&gt;</div>
<div class="line"><a id="l02535" name="l02535"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1unique__range__in.html#aaf57515e4b226d0b114ab5fc54f51ee3"> 2535</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1unique__range__in.html#aaf57515e4b226d0b114ab5fc54f51ee3">unique_range_in</a>(Args <span class="keyword">const</span>&amp;... args) noexcept</div>
<div class="line"><a id="l02536" name="l02536"></a><span class="lineno"> 2536</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a>{<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>{args...}}</div>
<div class="line"><a id="l02537" name="l02537"></a><span class="lineno"> 2537</span>  {</div>
<div class="line"><a id="l02538" name="l02538"></a><span class="lineno"> 2538</span>  }</div>
<div class="line"><a id="l02539" name="l02539"></a><span class="lineno"> 2539</span> </div>
<div class="line"><a id="l02545" name="l02545"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1unique__range__in.html#a252eabd84e3eaf7ac788446048652c93"> 2545</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1unique__range__in.html#a252eabd84e3eaf7ac788446048652c93">unique_range_in</a>() noexcept : <a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a>{<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>{}} {}</div>
<div class="line"><a id="l02546" name="l02546"></a><span class="lineno"> 2546</span> </div>
<div class="line"><a id="l02551" name="l02551"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1unique__range__in.html#a931bde31ac0aeb60e8f3050a29c60f83"> 2551</a></span>  <a class="code hl_function" href="classnvtx3_1_1v1_1_1unique__range__in.html#a931bde31ac0aeb60e8f3050a29c60f83">~unique_range_in</a>() noexcept = default;</div>
<div class="line"><a id="l02552" name="l02552"></a><span class="lineno"> 2552</span> </div>
<div class="line"><a id="l02559" name="l02559"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1unique__range__in.html#a0c58843cc9a553f0837fe0e46799006b"> 2559</a></span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a>&amp;&amp; other) noexcept = default;</div>
<div class="line"><a id="l02560" name="l02560"></a><span class="lineno"> 2560</span> </div>
<div class="line"><a id="l02567" name="l02567"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1unique__range__in.html#ac898edbc15c5426c6095c6a53f27951f"> 2567</a></span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a>&amp;&amp; other) noexcept = default;</div>
<div class="line"><a id="l02568" name="l02568"></a><span class="lineno"> 2568</span> </div>
<div class="line"><a id="l02571" name="l02571"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1unique__range__in.html#a6fffabbfcb1e245bf74e025628b6e67e"> 2571</a></span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a> const&amp;) = delete;</div>
<div class="line"><a id="l02572" name="l02572"></a><span class="lineno"> 2572</span> </div>
<div class="line"><a id="l02575" name="l02575"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1unique__range__in.html#a22402183d4e9db06a6b6a00e9218fcab"> 2575</a></span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a> const&amp;) = delete;</div>
<div class="line"><a id="l02576" name="l02576"></a><span class="lineno"> 2576</span> </div>
<div class="line"><a id="l02577" name="l02577"></a><span class="lineno"> 2577</span> private:</div>
<div class="line"><a id="l02578" name="l02578"></a><span class="lineno"> 2578</span> </div>
<div class="line"><a id="l02579" name="l02579"></a><span class="lineno"> 2579</span>  struct end_range_handle {</div>
<div class="line"><a id="l02580" name="l02580"></a><span class="lineno"> 2580</span>    <span class="keyword">using </span>pointer = <a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a>;  </div>
<div class="line"><a id="l02581" name="l02581"></a><span class="lineno"> 2581</span>    <span class="keywordtype">void</span> operator()(<a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> h) <span class="keyword">const</span> <span class="keyword">noexcept</span> { end_range_in&lt;D&gt;(h); }</div>
<div class="line"><a id="l02582" name="l02582"></a><span class="lineno"> 2582</span>  };</div>
<div class="line"><a id="l02583" name="l02583"></a><span class="lineno"> 2583</span> </div>
<div class="line"><a id="l02585" name="l02585"></a><span class="lineno"> 2585</span>  std::unique_ptr&lt;range_handle, end_range_handle&gt; handle_;</div>
<div class="line"><a id="l02586" name="l02586"></a><span class="lineno"> 2586</span>};</div>
<div class="line"><a id="l02587" name="l02587"></a><span class="lineno"> 2587</span> </div>
<div class="line"><a id="l02592" name="l02592"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a14d623348b01d05981c7ea644fd7976c"> 2592</a></span><span class="keyword">using </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range</a> = <a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in&lt;domain::global&gt;</a>;</div>
<div class="line"><a id="l02593" name="l02593"></a><span class="lineno"> 2593</span> </div>
<div class="line"><a id="l02617" name="l02617"></a><span class="lineno"> 2617</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = domain::global&gt;</div>
<div class="line"><a id="l02618" name="l02618"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a19ff87d74e1ba3b674b6e0a542d7a228"> 2618</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="nvtx3_8hpp.html#a19ff87d74e1ba3b674b6e0a542d7a228">mark_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> <span class="keyword">const</span>&amp; attr) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02619" name="l02619"></a><span class="lineno"> 2619</span>{</div>
<div class="line"><a id="l02620" name="l02620"></a><span class="lineno"> 2620</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02621" name="l02621"></a><span class="lineno"> 2621</span>  nvtxDomainMarkEx(domain::get&lt;D&gt;(), attr.get());</div>
<div class="line"><a id="l02622" name="l02622"></a><span class="lineno"> 2622</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02623" name="l02623"></a><span class="lineno"> 2623</span>  (void)(attr);</div>
<div class="line"><a id="l02624" name="l02624"></a><span class="lineno"> 2624</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02625" name="l02625"></a><span class="lineno"> 2625</span>}</div>
<div class="line"><a id="l02626" name="l02626"></a><span class="lineno"> 2626</span> </div>
<div class="line"><a id="l02654" name="l02654"></a><span class="lineno"> 2654</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = domain::global, <span class="keyword">typename</span>... Args&gt;</div>
<div class="line"><a id="l02655" name="l02655"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a82d22c4437222a9bf0c5ae0475aaea7a"> 2655</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="nvtx3_8hpp.html#a19ff87d74e1ba3b674b6e0a542d7a228">mark_in</a>(Args <span class="keyword">const</span>&amp;... args) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02656" name="l02656"></a><span class="lineno"> 2656</span>{</div>
<div class="line"><a id="l02657" name="l02657"></a><span class="lineno"> 2657</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02658" name="l02658"></a><span class="lineno"> 2658</span>  mark_in&lt;D&gt;(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>{args...});</div>
<div class="line"><a id="l02659" name="l02659"></a><span class="lineno"> 2659</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02660" name="l02660"></a><span class="lineno"> 2660</span>}</div>
<div class="line"><a id="l02661" name="l02661"></a><span class="lineno"> 2661</span> </div>
<div class="line"><a id="l02682" name="l02682"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#aa9b21b20125928a45a37c12bf1992651"> 2682</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="nvtx3_8hpp.html#aa9b21b20125928a45a37c12bf1992651">mark</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> <span class="keyword">const</span>&amp; attr) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02683" name="l02683"></a><span class="lineno"> 2683</span>{</div>
<div class="line"><a id="l02684" name="l02684"></a><span class="lineno"> 2684</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02685" name="l02685"></a><span class="lineno"> 2685</span>  mark_in&lt;domain::global&gt;(attr);</div>
<div class="line"><a id="l02686" name="l02686"></a><span class="lineno"> 2686</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02687" name="l02687"></a><span class="lineno"> 2687</span>}</div>
<div class="line"><a id="l02688" name="l02688"></a><span class="lineno"> 2688</span> </div>
<div class="line"><a id="l02713" name="l02713"></a><span class="lineno"> 2713</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span>... Args&gt;</div>
<div class="line"><a id="l02714" name="l02714"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#ab3d9b055ef46f4b1b29680e01f91ddaa"> 2714</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="nvtx3_8hpp.html#aa9b21b20125928a45a37c12bf1992651">mark</a>(Args <span class="keyword">const</span>&amp;... args) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02715" name="l02715"></a><span class="lineno"> 2715</span>{</div>
<div class="line"><a id="l02716" name="l02716"></a><span class="lineno"> 2716</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02717" name="l02717"></a><span class="lineno"> 2717</span>  mark_in&lt;domain::global&gt;(args...);</div>
<div class="line"><a id="l02718" name="l02718"></a><span class="lineno"> 2718</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02719" name="l02719"></a><span class="lineno"> 2719</span>}</div>
<div class="line"><a id="l02720" name="l02720"></a><span class="lineno"> 2720</span> </div>
<div class="line"><a id="l02721" name="l02721"></a><span class="lineno"> 2721</span>}  <span class="comment">// namespace NVTX3_VERSION_NAMESPACE</span></div>
<div class="line"><a id="l02722" name="l02722"></a><span class="lineno"> 2722</span> </div>
<div class="line"><a id="l02723" name="l02723"></a><span class="lineno"> 2723</span>}  <span class="comment">// namespace nvtx3</span></div>
<div class="line"><a id="l02724" name="l02724"></a><span class="lineno"> 2724</span> </div>
<div class="line"><a id="l02725" name="l02725"></a><span class="lineno"> 2725</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02754" name="l02754"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a58b4c0fa6be7f4754f8e73bcbf6fd1af"> 2754</a></span><span class="preprocessor">#define NVTX3_V1_FUNC_RANGE_IN(D)                                                  \</span></div>
<div class="line"><a id="l02755" name="l02755"></a><span class="lineno"> 2755</span><span class="preprocessor">  static ::nvtx3::v1::registered_string_in&lt;D&gt; const nvtx3_func_name__{__func__};   \</span></div>
<div class="line"><a id="l02756" name="l02756"></a><span class="lineno"> 2756</span><span class="preprocessor">  static ::nvtx3::v1::event_attributes const nvtx3_func_attr__{nvtx3_func_name__}; \</span></div>
<div class="line"><a id="l02757" name="l02757"></a><span class="lineno"> 2757</span><span class="preprocessor">  ::nvtx3::v1::scoped_range_in&lt;D&gt; const nvtx3_range__{nvtx3_func_attr__};</span></div>
<div class="line"><a id="l02758" name="l02758"></a><span class="lineno"> 2758</span> </div>
<div class="line"><a id="l02775" name="l02775"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#af6fecf49b25b2364e548f9786136fb95"> 2775</a></span><span class="preprocessor">#define NVTX3_V1_FUNC_RANGE_IF_IN(D, C) \</span></div>
<div class="line"><a id="l02776" name="l02776"></a><span class="lineno"> 2776</span><span class="preprocessor">  ::nvtx3::v1::detail::optional_scoped_range_in&lt;D&gt; optional_nvtx3_range__;           \</span></div>
<div class="line"><a id="l02777" name="l02777"></a><span class="lineno"> 2777</span><span class="preprocessor">  if (C) {                                                                           \</span></div>
<div class="line"><a id="l02778" name="l02778"></a><span class="lineno"> 2778</span><span class="preprocessor">    static ::nvtx3::v1::registered_string_in&lt;D&gt; const nvtx3_func_name__{__func__};   \</span></div>
<div class="line"><a id="l02779" name="l02779"></a><span class="lineno"> 2779</span><span class="preprocessor">    static ::nvtx3::v1::event_attributes const nvtx3_func_attr__{nvtx3_func_name__}; \</span></div>
<div class="line"><a id="l02780" name="l02780"></a><span class="lineno"> 2780</span><span class="preprocessor">    optional_nvtx3_range__.begin(nvtx3_func_attr__);                                 \</span></div>
<div class="line"><a id="l02781" name="l02781"></a><span class="lineno"> 2781</span><span class="preprocessor">  }</span></div>
<div class="line"><a id="l02782" name="l02782"></a><span class="lineno"> 2782</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02783" name="l02783"></a><span class="lineno"> 2783</span><span class="preprocessor">#define NVTX3_V1_FUNC_RANGE_IN(D)</span></div>
<div class="line"><a id="l02784" name="l02784"></a><span class="lineno"> 2784</span><span class="preprocessor">#define NVTX3_V1_FUNC_RANGE_IF_IN(D, C)</span></div>
<div class="line"><a id="l02785" name="l02785"></a><span class="lineno"> 2785</span><span class="preprocessor">#endif  </span><span class="comment">// NVTX_DISABLE</span></div>
<div class="line"><a id="l02786" name="l02786"></a><span class="lineno"> 2786</span> </div>
<div class="line"><a id="l02809" name="l02809"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a9f0dbc21588c8d0f6ee728fdf5289490"> 2809</a></span><span class="preprocessor">#define NVTX3_V1_FUNC_RANGE() NVTX3_V1_FUNC_RANGE_IN(::nvtx3::v1::domain::global)</span></div>
<div class="line"><a id="l02810" name="l02810"></a><span class="lineno"> 2810</span> </div>
<div class="line"><a id="l02822" name="l02822"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a7f4e78b0ede77382c2c09fa007c5963e"> 2822</a></span><span class="preprocessor">#define NVTX3_V1_FUNC_RANGE_IF(C) NVTX3_V1_FUNC_RANGE_IF_IN(::nvtx3::v1::domain::global, C)</span></div>
<div class="line"><a id="l02823" name="l02823"></a><span class="lineno"> 2823</span> </div>
<div class="line"><a id="l02824" name="l02824"></a><span class="lineno"> 2824</span><span class="comment">/* When inlining this version, versioned macros must have unversioned aliases.</span></div>
<div class="line"><a id="l02825" name="l02825"></a><span class="lineno"> 2825</span><span class="comment"> * For each NVTX3_Vx_ #define, make an NVTX3_ alias of it here.*/</span></div>
<div class="line"><a id="l02826" name="l02826"></a><span class="lineno"> 2826</span><span class="preprocessor">#if defined(NVTX3_INLINE_THIS_VERSION)</span></div>
<div class="line"><a id="l02827" name="l02827"></a><span class="lineno"> 2827</span><span class="comment">/* clang format off */</span></div>
<div class="line"><a id="l02828" name="l02828"></a><span class="lineno"> 2828</span><span class="preprocessor">#define NVTX3_FUNC_RANGE       NVTX3_V1_FUNC_RANGE</span></div>
<div class="line"><a id="l02829" name="l02829"></a><span class="lineno"> 2829</span><span class="preprocessor">#define NVTX3_FUNC_RANGE_IF    NVTX3_V1_FUNC_RANGE_IF</span></div>
<div class="line"><a id="l02830" name="l02830"></a><span class="lineno"> 2830</span><span class="preprocessor">#define NVTX3_FUNC_RANGE_IN    NVTX3_V1_FUNC_RANGE_IN</span></div>
<div class="line"><a id="l02831" name="l02831"></a><span class="lineno"> 2831</span><span class="preprocessor">#define NVTX3_FUNC_RANGE_IF_IN NVTX3_V1_FUNC_RANGE_IF_IN</span></div>
<div class="line"><a id="l02832" name="l02832"></a><span class="lineno"> 2832</span><span class="comment">/* clang format on */</span></div>
<div class="line"><a id="l02833" name="l02833"></a><span class="lineno"> 2833</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02834" name="l02834"></a><span class="lineno"> 2834</span> </div>
<div class="line"><a id="l02835" name="l02835"></a><span class="lineno"> 2835</span><span class="preprocessor">#endif  </span><span class="comment">// NVTX3_CPP_DEFINITIONS_V1_0</span></div>
<div class="line"><a id="l02836" name="l02836"></a><span class="lineno"> 2836</span> </div>
<div class="line"><a id="l02837" name="l02837"></a><span class="lineno"> 2837</span><span class="comment">/* Add functionality for new minor versions here, by copying the above section enclosed</span></div>
<div class="line"><a id="l02838" name="l02838"></a><span class="lineno"> 2838</span><span class="comment"> * in #ifndef NVTX3_CPP_DEFINITIONS_Vx_y, and incrementing the minor version.  This code</span></div>
<div class="line"><a id="l02839" name="l02839"></a><span class="lineno"> 2839</span><span class="comment"> * is an example of how additions for version 1.2 would look, indented for clarity.  Note</span></div>
<div class="line"><a id="l02840" name="l02840"></a><span class="lineno"> 2840</span><span class="comment"> * that the versioned symbols and macros are always provided, and the unversioned symbols</span></div>
<div class="line"><a id="l02841" name="l02841"></a><span class="lineno"> 2841</span><span class="comment"> * are only provided if NVTX3_INLINE_THIS_VERSION was defined at the top of this header.</span></div>
<div class="line"><a id="l02842" name="l02842"></a><span class="lineno"> 2842</span><span class="comment"> *</span></div>
<div class="line"><a id="l02843" name="l02843"></a><span class="lineno"> 2843</span><span class="comment"> * \code{.cpp}</span></div>
<div class="line"><a id="l02844" name="l02844"></a><span class="lineno"> 2844</span><span class="comment"> * #ifndef NVTX3_CPP_DEFINITIONS_V1_2</span></div>
<div class="line"><a id="l02845" name="l02845"></a><span class="lineno"> 2845</span><span class="comment"> * #define NVTX3_CPP_DEFINITIONS_V1_2</span></div>
<div class="line"><a id="l02846" name="l02846"></a><span class="lineno"> 2846</span><span class="comment"> *     namespace nvtx3 {</span></div>
<div class="line"><a id="l02847" name="l02847"></a><span class="lineno"> 2847</span><span class="comment"> *         NVTX3_INLINE_IF_REQUESTED namespace NVTX3_VERSION_NAMESPACE {</span></div>
<div class="line"><a id="l02848" name="l02848"></a><span class="lineno"> 2848</span><span class="comment"> *             class new_class {};</span></div>
<div class="line"><a id="l02849" name="l02849"></a><span class="lineno"> 2849</span><span class="comment"> *             inline void new_function() {}</span></div>
<div class="line"><a id="l02850" name="l02850"></a><span class="lineno"> 2850</span><span class="comment"> *         }</span></div>
<div class="line"><a id="l02851" name="l02851"></a><span class="lineno"> 2851</span><span class="comment"> *     }</span></div>
<div class="line"><a id="l02852" name="l02852"></a><span class="lineno"> 2852</span><span class="comment"> *</span></div>
<div class="line"><a id="l02853" name="l02853"></a><span class="lineno"> 2853</span><span class="comment"> *     // Macros must have the major version in their names:</span></div>
<div class="line"><a id="l02854" name="l02854"></a><span class="lineno"> 2854</span><span class="comment"> *     #define NVTX3_V1_NEW_MACRO_A() ...</span></div>
<div class="line"><a id="l02855" name="l02855"></a><span class="lineno"> 2855</span><span class="comment"> *     #define NVTX3_V1_NEW_MACRO_B() ...</span></div>
<div class="line"><a id="l02856" name="l02856"></a><span class="lineno"> 2856</span><span class="comment"> *</span></div>
<div class="line"><a id="l02857" name="l02857"></a><span class="lineno"> 2857</span><span class="comment"> *     // If inlining, make aliases for the macros with the version number omitted</span></div>
<div class="line"><a id="l02858" name="l02858"></a><span class="lineno"> 2858</span><span class="comment"> *     #if defined(NVTX3_INLINE_THIS_VERSION)</span></div>
<div class="line"><a id="l02859" name="l02859"></a><span class="lineno"> 2859</span><span class="comment"> *         #define NVTX3_NEW_MACRO_A NVTX3_V1_NEW_MACRO_A</span></div>
<div class="line"><a id="l02860" name="l02860"></a><span class="lineno"> 2860</span><span class="comment"> *         #define NVTX3_NEW_MACRO_B NVTX3_V1_NEW_MACRO_B</span></div>
<div class="line"><a id="l02861" name="l02861"></a><span class="lineno"> 2861</span><span class="comment"> *     #endif</span></div>
<div class="line"><a id="l02862" name="l02862"></a><span class="lineno"> 2862</span><span class="comment"> * #endif // NVTX3_CPP_DEFINITIONS_V1_2</span></div>
<div class="line"><a id="l02863" name="l02863"></a><span class="lineno"> 2863</span><span class="comment"> * \endcode</span></div>
<div class="line"><a id="l02864" name="l02864"></a><span class="lineno"> 2864</span><span class="comment"> */</span></div>
<div class="line"><a id="l02865" name="l02865"></a><span class="lineno"> 2865</span> </div>
<div class="line"><a id="l02866" name="l02866"></a><span class="lineno"> 2866</span><span class="comment">/* Undefine all temporarily-defined unversioned macros, which would conflict with</span></div>
<div class="line"><a id="l02867" name="l02867"></a><span class="lineno"> 2867</span><span class="comment"> * subsequent includes of different versions of this header. */</span></div>
<div class="line"><a id="l02868" name="l02868"></a><span class="lineno"> 2868</span><span class="preprocessor">#undef NVTX3_CPP_VERSION_MAJOR</span></div>
<div class="line"><a id="l02869" name="l02869"></a><span class="lineno"> 2869</span><span class="preprocessor">#undef NVTX3_CPP_VERSION_MINOR</span></div>
<div class="line"><a id="l02870" name="l02870"></a><span class="lineno"> 2870</span><span class="preprocessor">#undef NVTX3_CONCAT</span></div>
<div class="line"><a id="l02871" name="l02871"></a><span class="lineno"> 2871</span><span class="preprocessor">#undef NVTX3_NAMESPACE_FOR</span></div>
<div class="line"><a id="l02872" name="l02872"></a><span class="lineno"> 2872</span><span class="preprocessor">#undef NVTX3_VERSION_NAMESPACE</span></div>
<div class="line"><a id="l02873" name="l02873"></a><span class="lineno"> 2873</span><span class="preprocessor">#undef NVTX3_INLINE_IF_REQUESTED</span></div>
<div class="line"><a id="l02874" name="l02874"></a><span class="lineno"> 2874</span><span class="preprocessor">#undef NVTX3_CONSTEXPR_IF_CPP14</span></div>
<div class="line"><a id="l02875" name="l02875"></a><span class="lineno"> 2875</span> </div>
<div class="line"><a id="l02876" name="l02876"></a><span class="lineno"> 2876</span><span class="preprocessor">#if defined(NVTX3_INLINE_THIS_VERSION)</span></div>
<div class="line"><a id="l02877" name="l02877"></a><span class="lineno"> 2877</span><span class="preprocessor">#undef NVTX3_INLINE_THIS_VERSION</span></div>
<div class="line"><a id="l02878" name="l02878"></a><span class="lineno"> 2878</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02879" name="l02879"></a><span class="lineno"> 2879</span> </div>
<div class="line"><a id="l02880" name="l02880"></a><span class="lineno"> 2880</span><span class="preprocessor">#if defined(NVTX3_USE_CHECKED_OVERLOADS_FOR_GET_DEFINED_HERE)</span></div>
<div class="line"><a id="l02881" name="l02881"></a><span class="lineno"> 2881</span><span class="preprocessor">#undef NVTX3_USE_CHECKED_OVERLOADS_FOR_GET_DEFINED_HERE</span></div>
<div class="line"><a id="l02882" name="l02882"></a><span class="lineno"> 2882</span><span class="preprocessor">#undef NVTX3_USE_CHECKED_OVERLOADS_FOR_GET</span></div>
<div class="line"><a id="l02883" name="l02883"></a><span class="lineno"> 2883</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02884" name="l02884"></a><span class="lineno"> 2884</span> </div>
<div class="line"><a id="l02885" name="l02885"></a><span class="lineno"> 2885</span><span class="preprocessor">#if defined(NVTX3_STATIC_ASSERT_DEFINED_HERE)</span></div>
<div class="line"><a id="l02886" name="l02886"></a><span class="lineno"> 2886</span><span class="preprocessor">#undef NVTX3_STATIC_ASSERT_DEFINED_HERE</span></div>
<div class="line"><a id="l02887" name="l02887"></a><span class="lineno"> 2887</span><span class="preprocessor">#undef NVTX3_STATIC_ASSERT</span></div>
<div class="line"><a id="l02888" name="l02888"></a><span class="lineno"> 2888</span><span class="preprocessor">#endif</span></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1category_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1category.html">nvtx3::category</a></div><div class="ttdoc">Object for intra-domain grouping of NVTX events.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01125">nvtx3.hpp:1125</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1category_html_a16b26c66ef40850b7bf79fb8e8b9ccec"><div class="ttname"><a href="classnvtx3_1_1v1_1_1category.html#a16b26c66ef40850b7bf79fb8e8b9ccec">nvtx3::v1::category::category</a></div><div class="ttdeci">constexpr category(id_type id) noexcept</div><div class="ttdoc">Construct a category with the specified id.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01139">nvtx3.hpp:1139</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1category_html_a5d59d395dff9e74ec8bd6154581fc345"><div class="ttname"><a href="classnvtx3_1_1v1_1_1category.html#a5d59d395dff9e74ec8bd6154581fc345">nvtx3::v1::category::get_id</a></div><div class="ttdeci">constexpr id_type get_id() const noexcept</div><div class="ttdoc">Returns the id of the category.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01145">nvtx3.hpp:1145</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1category_html_a93b9c6f1e074a03ee50287c9c6414bc0"><div class="ttname"><a href="classnvtx3_1_1v1_1_1category.html#a93b9c6f1e074a03ee50287c9c6414bc0">nvtx3::v1::category::id_type</a></div><div class="ttdeci">uint32_t id_type</div><div class="ttdoc">Type used for categorys integer id.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01128">nvtx3.hpp:1128</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1color_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1color.html">nvtx3::color</a></div><div class="ttdoc">Represents a custom color that can be associated with an NVTX event via it's event_attributes.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01018">nvtx3.hpp:1018</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1color_html_a44f694cefa3afee1d9dfbf2fde3a06f4"><div class="ttname"><a href="classnvtx3_1_1v1_1_1color.html#a44f694cefa3afee1d9dfbf2fde3a06f4">nvtx3::v1::color::get_value</a></div><div class="ttdeci">constexpr value_type get_value() const noexcept</div><div class="ttdoc">Returns the colors argb hex code.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01070">nvtx3.hpp:1070</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1color_html_a47084ed086b5071cd7b070b0a4611e24"><div class="ttname"><a href="classnvtx3_1_1v1_1_1color.html#a47084ed086b5071cd7b070b0a4611e24">nvtx3::v1::color::color</a></div><div class="ttdeci">constexpr color(rgb rgb_) noexcept</div><div class="ttdoc">Construct a color using the red, green, blue components in rgb.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01061">nvtx3.hpp:1061</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1color_html_a6327e421cdd233398693a2804aea942f"><div class="ttname"><a href="classnvtx3_1_1v1_1_1color.html#a6327e421cdd233398693a2804aea942f">nvtx3::v1::color::value_type</a></div><div class="ttdeci">uint32_t value_type</div><div class="ttdoc">Type used for the color's value.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01021">nvtx3.hpp:1021</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1color_html_a671a9e63379a2896f5c689fb0a37f0a9"><div class="ttname"><a href="classnvtx3_1_1v1_1_1color.html#a671a9e63379a2896f5c689fb0a37f0a9">nvtx3::v1::color::color</a></div><div class="ttdeci">constexpr color(value_type hex_code) noexcept</div><div class="ttdoc">Constructs a color using the value provided by hex_code.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01040">nvtx3.hpp:1040</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1color_html_abd11ca09f1b3a66041cea45d4141dc37"><div class="ttname"><a href="classnvtx3_1_1v1_1_1color.html#abd11ca09f1b3a66041cea45d4141dc37">nvtx3::v1::color::color</a></div><div class="ttdeci">constexpr color(argb argb_) noexcept</div><div class="ttdoc">Construct a color using the alpha, red, green, blue components in argb.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01048">nvtx3.hpp:1048</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1color_html_af550398d7d76d9452576860a4363d75c"><div class="ttname"><a href="classnvtx3_1_1v1_1_1color.html#af550398d7d76d9452576860a4363d75c">nvtx3::v1::color::get_type</a></div><div class="ttdeci">constexpr nvtxColorType_t get_type() const noexcept</div><div class="ttdoc">Return the NVTX color type of the color.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01076">nvtx3.hpp:1076</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1domain_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1domain.html">nvtx3::domain</a></div><div class="ttdoc">domains allow for grouping NVTX events into a single scope to differentiate them from events in other...</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l00728">nvtx3.hpp:728</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1domain_html_a0d83a594238449a3da85e337409fc3db"><div class="ttname"><a href="classnvtx3_1_1v1_1_1domain.html#a0d83a594238449a3da85e337409fc3db">nvtx3::v1::domain::get</a></div><div class="ttdeci">static domain const &amp; get() noexcept</div><div class="ttdoc">Returns reference to an instance of a function local static domain object.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l00798">nvtx3.hpp:798</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1event__attributes_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1event__attributes.html">nvtx3::event_attributes</a></div><div class="ttdoc">Describes the attributes of a NVTX event.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01913">nvtx3.hpp:1913</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1event__attributes_html_a14e581407cea05235f0f814f4043c656"><div class="ttname"><a href="classnvtx3_1_1v1_1_1event__attributes.html#a14e581407cea05235f0f814f4043c656">nvtx3::v1::event_attributes::event_attributes</a></div><div class="ttdeci">event_attributes(color const &amp;c, Args const &amp;... args) noexcept</div><div class="ttdoc">Variadic constructor where the first argument is a color.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01959">nvtx3.hpp:1959</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1event__attributes_html_a27ef8784b11bb620cd597ea55a781e02"><div class="ttname"><a href="classnvtx3_1_1v1_1_1event__attributes.html#a27ef8784b11bb620cd597ea55a781e02">nvtx3::v1::event_attributes::event_attributes</a></div><div class="ttdeci">event_attributes(category const &amp;c, Args const &amp;... args) noexcept</div><div class="ttdoc">Variadic constructor where the first argument is a category.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01945">nvtx3.hpp:1945</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1event__attributes_html_aa060dd3c07034ccef18c2b48ec99f90c"><div class="ttname"><a href="classnvtx3_1_1v1_1_1event__attributes.html#aa060dd3c07034ccef18c2b48ec99f90c">nvtx3::v1::event_attributes::get</a></div><div class="ttdeci">constexpr value_type const * get() const noexcept</div><div class="ttdoc">Get raw pointer to underlying NVTX attributes object.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l02006">nvtx3.hpp:2006</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1event__attributes_html_ac16fc2b8249f503ff89ee14a9fdb63fd"><div class="ttname"><a href="classnvtx3_1_1v1_1_1event__attributes.html#ac16fc2b8249f503ff89ee14a9fdb63fd">nvtx3::v1::event_attributes::event_attributes</a></div><div class="ttdeci">event_attributes(payload const &amp;p, Args const &amp;... args) noexcept</div><div class="ttdoc">Variadic constructor where the first argument is a payload.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01974">nvtx3.hpp:1974</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1event__attributes_html_acccdd768a4fbe2234d151e8a8443f44f"><div class="ttname"><a href="classnvtx3_1_1v1_1_1event__attributes.html#acccdd768a4fbe2234d151e8a8443f44f">nvtx3::v1::event_attributes::event_attributes</a></div><div class="ttdeci">event_attributes(message const &amp;m, Args const &amp;... args) noexcept</div><div class="ttdoc">Variadic constructor where the first argument is a message.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01989">nvtx3.hpp:1989</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1event__attributes_html_af9b06fcd1d0bb4b8739009b3b00ef34d"><div class="ttname"><a href="classnvtx3_1_1v1_1_1event__attributes.html#af9b06fcd1d0bb4b8739009b3b00ef34d">nvtx3::v1::event_attributes::event_attributes</a></div><div class="ttdeci">constexpr event_attributes() noexcept</div><div class="ttdoc">Default constructor creates an event_attributes with no category, color, payload, nor message.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01921">nvtx3.hpp:1921</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html">nvtx3::message</a></div><div class="ttdoc">Allows associating a message string with an NVTX event via its EventAttributes.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01623">nvtx3.hpp:1623</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_a0864f7bb6f147a8e45241883fc53d2bf"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#a0864f7bb6f147a8e45241883fc53d2bf">nvtx3::v1::message::message</a></div><div class="ttdeci">message(std::string const &amp;msg) noexcept</div><div class="ttdoc">Construct a message whose contents are specified by msg.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01642">nvtx3.hpp:1642</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_a15e5e0153c1ccb5db9db7ed35ed61481"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#a15e5e0153c1ccb5db9db7ed35ed61481">nvtx3::v1::message::message</a></div><div class="ttdeci">message(wchar_t const *msg) noexcept</div><div class="ttdoc">Construct a message whose contents are specified by msg.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01659">nvtx3.hpp:1659</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_a17d2eaf8f1c653ddf6237425833f3cfc"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#a17d2eaf8f1c653ddf6237425833f3cfc">nvtx3::v1::message::get_value</a></div><div class="ttdeci">constexpr value_type get_value() const noexcept</div><div class="ttdoc">Return the union holding the value of the message.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01724">nvtx3.hpp:1724</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_a2827347a64c6c91518f5191eade74054"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#a2827347a64c6c91518f5191eade74054">nvtx3::v1::message::message</a></div><div class="ttdeci">message(registered_string_in&lt; D &gt; const &amp;msg) noexcept</div><div class="ttdoc">Construct a message from a registered_string_in.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01690">nvtx3.hpp:1690</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_a3a8b73acb3c9cd2a5d78fe94efb0a9db"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#a3a8b73acb3c9cd2a5d78fe94efb0a9db">nvtx3::v1::message::message</a></div><div class="ttdeci">message(std::wstring &amp;&amp;)=delete</div><div class="ttdoc">Disallow construction for std::wstring r-value.</div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_a856a7186fd697a92b2a6699a448ffc45"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#a856a7186fd697a92b2a6699a448ffc45">nvtx3::v1::message::get_type</a></div><div class="ttdeci">constexpr nvtxMessageType_t get_type() const noexcept</div><div class="ttdoc">Return the type information about the value the union holds.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01730">nvtx3.hpp:1730</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_ab0e7eae70ce91c6f8aa9be048fc146bd"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#ab0e7eae70ce91c6f8aa9be048fc146bd">nvtx3::v1::message::message</a></div><div class="ttdeci">message(nvtxStringHandle_t handle) noexcept</div><div class="ttdoc">Construct a message from NVTX C API registered string handle.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01714">nvtx3.hpp:1714</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_abdbef47b3202d55a8b956da6b1296448"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#abdbef47b3202d55a8b956da6b1296448">nvtx3::v1::message::message</a></div><div class="ttdeci">message(char const *msg) noexcept</div><div class="ttdoc">Construct a message whose contents are specified by msg.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01632">nvtx3.hpp:1632</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_ad16d6a6518feb8f438faf0dbe052a4ee"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#ad16d6a6518feb8f438faf0dbe052a4ee">nvtx3::v1::message::message</a></div><div class="ttdeci">constexpr message(nvtxMessageType_t const &amp;type, nvtxMessageValue_t const &amp;value) noexcept</div><div class="ttdoc">Construct a message from NVTX C API type and value.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01702">nvtx3.hpp:1702</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_ad5fcc11a05dfb819fcf3238ae90131a0"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#ad5fcc11a05dfb819fcf3238ae90131a0">nvtx3::v1::message::message</a></div><div class="ttdeci">message(std::string &amp;&amp;)=delete</div><div class="ttdoc">Disallow construction for std::string r-value.</div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_af152cd392b2bd13dd1fd00fbf2d29c09"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#af152cd392b2bd13dd1fd00fbf2d29c09">nvtx3::v1::message::message</a></div><div class="ttdeci">message(std::wstring const &amp;msg) noexcept</div><div class="ttdoc">Construct a message whose contents are specified by msg.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01669">nvtx3.hpp:1669</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1named__category__in_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1named__category__in.html">nvtx3::named_category_in</a></div><div class="ttdoc">A category with an associated name string.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01208">nvtx3.hpp:1208</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1named__category__in_html_a0b8ac1f00f1c0686858a20884c8eb19a"><div class="ttname"><a href="classnvtx3_1_1v1_1_1named__category__in.html#a0b8ac1f00f1c0686858a20884c8eb19a">nvtx3::v1::named_category_in::named_category_in</a></div><div class="ttdeci">named_category_in(id_type id, wchar_t const *name) noexcept</div><div class="ttdoc">Construct a named_category_in with the specified id and name.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01344">nvtx3.hpp:1344</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1named__category__in_html_a3bc82f4cd71482347796787bc4436e30"><div class="ttname"><a href="classnvtx3_1_1v1_1_1named__category__in.html#a3bc82f4cd71482347796787bc4436e30">nvtx3::v1::named_category_in::get</a></div><div class="ttdeci">static named_category_in const &amp; get() noexcept</div><div class="ttdoc">Returns a global instance of a named_category_in as a function-local static.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01250">nvtx3.hpp:1250</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1named__category__in_html_a7fe4261f6a0b9d1cfb6e566d8ff2135f"><div class="ttname"><a href="classnvtx3_1_1v1_1_1named__category__in.html#a7fe4261f6a0b9d1cfb6e566d8ff2135f">nvtx3::v1::named_category_in::named_category_in</a></div><div class="ttdeci">named_category_in(id_type id, char const *name) noexcept</div><div class="ttdoc">Construct a named_category_in with the specified id and name.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01324">nvtx3.hpp:1324</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html">nvtx3::payload</a></div><div class="ttdoc">A numerical value that can be associated with an NVTX event via its event_attributes.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01753">nvtx3.hpp:1753</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html_a0351f31362bee4c7222bfa830dc46adf"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html#a0351f31362bee4c7222bfa830dc46adf">nvtx3::v1::payload::payload</a></div><div class="ttdeci">payload(int32_t value) noexcept</div><div class="ttdoc">Construct a payload from a signed, 4 byte integer.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01773">nvtx3.hpp:1773</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html_a2c3609dc8a8e6ce0ddfda5e96113ea53"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html#a2c3609dc8a8e6ce0ddfda5e96113ea53">nvtx3::v1::payload::payload</a></div><div class="ttdeci">constexpr payload(nvtxPayloadType_t const &amp;type, value_type const &amp;value) noexcept</div><div class="ttdoc">Construct a payload from NVTX C API type and value.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01831">nvtx3.hpp:1831</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html_a3755fd622f2552519d77f83d2f41950d"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html#a3755fd622f2552519d77f83d2f41950d">nvtx3::v1::payload::payload</a></div><div class="ttdeci">payload(uint32_t value) noexcept</div><div class="ttdoc">Construct a payload from an unsigned, 4 byte integer.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01795">nvtx3.hpp:1795</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html_a4eb0c1e4256db34fa68779a67d26e4ef"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html#a4eb0c1e4256db34fa68779a67d26e4ef">nvtx3::v1::payload::payload</a></div><div class="ttdeci">payload(int64_t value) noexcept</div><div class="ttdoc">Construct a payload from a signed, 8 byte integer.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01762">nvtx3.hpp:1762</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html_a69cc4703669a5c973fcac94b998b1677"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html#a69cc4703669a5c973fcac94b998b1677">nvtx3::v1::payload::payload</a></div><div class="ttdeci">payload(float value) noexcept</div><div class="ttdoc">Construct a payload from a single-precision floating point value.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01807">nvtx3.hpp:1807</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html_ab2f4ae9a528d1ba77a99aa6a334123ed"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html#ab2f4ae9a528d1ba77a99aa6a334123ed">nvtx3::v1::payload::payload</a></div><div class="ttdeci">payload(double value) noexcept</div><div class="ttdoc">Construct a payload from a double-precision floating point value.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01819">nvtx3.hpp:1819</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html_abb1094dc4fa3abc332ed18133fb2164e"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html#abb1094dc4fa3abc332ed18133fb2164e">nvtx3::v1::payload::get_value</a></div><div class="ttdeci">constexpr value_type get_value() const noexcept</div><div class="ttdoc">Return the union holding the value of the payload.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01842">nvtx3.hpp:1842</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html_aeb3c21614c98acab62d0007175093172"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html#aeb3c21614c98acab62d0007175093172">nvtx3::v1::payload::get_type</a></div><div class="ttdeci">constexpr nvtxPayloadType_t get_type() const noexcept</div><div class="ttdoc">Return the information about the type the union holds.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01848">nvtx3.hpp:1848</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html_afae6410eb17c40079fec46cfa6472ca8"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html#afae6410eb17c40079fec46cfa6472ca8">nvtx3::v1::payload::payload</a></div><div class="ttdeci">payload(uint64_t value) noexcept</div><div class="ttdoc">Construct a payload from an unsigned, 8 byte integer.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01784">nvtx3.hpp:1784</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1registered__string__in_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1registered__string__in.html">nvtx3::registered_string_in</a></div><div class="ttdoc">A message registered with NVTX.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01408">nvtx3.hpp:1408</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1registered__string__in_html_a059adcf011e73293c1d76a512d316524"><div class="ttname"><a href="classnvtx3_1_1v1_1_1registered__string__in.html#a059adcf011e73293c1d76a512d316524">nvtx3::v1::registered_string_in::registered_string_in</a></div><div class="ttdeci">registered_string_in(char const *msg) noexcept</div><div class="ttdoc">Constructs a registered_string_in from the specified msg string.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01510">nvtx3.hpp:1510</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1registered__string__in_html_a13d5f54f46e91073677fcfbe094dd261"><div class="ttname"><a href="classnvtx3_1_1v1_1_1registered__string__in.html#a13d5f54f46e91073677fcfbe094dd261">nvtx3::v1::registered_string_in::get_handle</a></div><div class="ttdeci">nvtxStringHandle_t get_handle() const noexcept</div><div class="ttdoc">Returns the registered string's handle.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01563">nvtx3.hpp:1563</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1registered__string__in_html_a7e8f0b775f6363e2187f50648c5a44f5"><div class="ttname"><a href="classnvtx3_1_1v1_1_1registered__string__in.html#a7e8f0b775f6363e2187f50648c5a44f5">nvtx3::v1::registered_string_in::registered_string_in</a></div><div class="ttdeci">registered_string_in(std::string const &amp;msg) noexcept</div><div class="ttdoc">Constructs a registered_string_in from the specified msg string.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01526">nvtx3.hpp:1526</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1registered__string__in_html_a90f6112510f0745a373a7fdb162b85de"><div class="ttname"><a href="classnvtx3_1_1v1_1_1registered__string__in.html#a90f6112510f0745a373a7fdb162b85de">nvtx3::v1::registered_string_in::registered_string_in</a></div><div class="ttdeci">registered_string_in(std::wstring const &amp;msg) noexcept</div><div class="ttdoc">Constructs a registered_string_in from the specified msg string.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01556">nvtx3.hpp:1556</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1registered__string__in_html_ab9d2c81308244bec4198167e2c8d3d4c"><div class="ttname"><a href="classnvtx3_1_1v1_1_1registered__string__in.html#ab9d2c81308244bec4198167e2c8d3d4c">nvtx3::v1::registered_string_in::registered_string_in</a></div><div class="ttdeci">registered_string_in(wchar_t const *msg) noexcept</div><div class="ttdoc">Constructs a registered_string_in from the specified msg string.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01540">nvtx3.hpp:1540</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1registered__string__in_html_abf90f8765081cee5f99d971271e29567"><div class="ttname"><a href="classnvtx3_1_1v1_1_1registered__string__in.html#abf90f8765081cee5f99d971271e29567">nvtx3::v1::registered_string_in::get</a></div><div class="ttdeci">static registered_string_in const &amp; get() noexcept</div><div class="ttdoc">Returns a global instance of a registered_string_in as a function local static.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l01448">nvtx3.hpp:1448</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1scoped__range__in_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1scoped__range__in.html">nvtx3::scoped_range_in</a></div><div class="ttdoc">A RAII object for creating a NVTX range local to a thread within a domain.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l02060">nvtx3.hpp:2060</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1scoped__range__in_html_a25eff24202b7021ced3481b29c1768c8"><div class="ttname"><a href="classnvtx3_1_1v1_1_1scoped__range__in.html#a25eff24202b7021ced3481b29c1768c8">nvtx3::v1::scoped_range_in::scoped_range_in</a></div><div class="ttdeci">scoped_range_in(event_attributes const &amp;attr) noexcept</div><div class="ttdoc">Construct a scoped_range_in with the specified event_attributes</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l02076">nvtx3.hpp:2076</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1scoped__range__in_html_a53b3c3d95b29dfc31db2df290804df65"><div class="ttname"><a href="classnvtx3_1_1v1_1_1scoped__range__in.html#a53b3c3d95b29dfc31db2df290804df65">nvtx3::v1::scoped_range_in::scoped_range_in</a></div><div class="ttdeci">scoped_range_in(Args const &amp;... args) noexcept</div><div class="ttdoc">Constructs a scoped_range_in from the constructor arguments of an event_attributes.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l02106">nvtx3.hpp:2106</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1scoped__range__in_html_a72417f5a5f0ecf2b67551880bdd28955"><div class="ttname"><a href="classnvtx3_1_1v1_1_1scoped__range__in.html#a72417f5a5f0ecf2b67551880bdd28955">nvtx3::v1::scoped_range_in::scoped_range_in</a></div><div class="ttdeci">scoped_range_in() noexcept</div><div class="ttdoc">Default constructor creates a scoped_range_in with no message, color, payload, nor category.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l02116">nvtx3.hpp:2116</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1scoped__range__in_html_aebf31fd1548c4bf5196332db9ee90fb1"><div class="ttname"><a href="classnvtx3_1_1v1_1_1scoped__range__in.html#aebf31fd1548c4bf5196332db9ee90fb1">nvtx3::v1::scoped_range_in::~scoped_range_in</a></div><div class="ttdeci">~scoped_range_in() noexcept</div><div class="ttdoc">Destroy the scoped_range_in, ending the NVTX range event.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l02134">nvtx3.hpp:2134</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1unique__range__in_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1unique__range__in.html">nvtx3::unique_range_in</a></div><div class="ttdoc">A RAII object for creating a NVTX range within a domain that can be created and destroyed on differen...</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l02495">nvtx3.hpp:2495</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1unique__range__in_html_a252eabd84e3eaf7ac788446048652c93"><div class="ttname"><a href="classnvtx3_1_1v1_1_1unique__range__in.html#a252eabd84e3eaf7ac788446048652c93">nvtx3::v1::unique_range_in::unique_range_in</a></div><div class="ttdeci">constexpr unique_range_in() noexcept</div><div class="ttdoc">Default constructor creates a unique_range_in with no message, color, payload, nor category.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l02545">nvtx3.hpp:2545</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1unique__range__in_html_a931bde31ac0aeb60e8f3050a29c60f83"><div class="ttname"><a href="classnvtx3_1_1v1_1_1unique__range__in.html#a931bde31ac0aeb60e8f3050a29c60f83">nvtx3::v1::unique_range_in::~unique_range_in</a></div><div class="ttdeci">~unique_range_in() noexcept=default</div><div class="ttdoc">Destroy the unique_range_in ending the range.</div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1unique__range__in_html_aaf57515e4b226d0b114ab5fc54f51ee3"><div class="ttname"><a href="classnvtx3_1_1v1_1_1unique__range__in.html#aaf57515e4b226d0b114ab5fc54f51ee3">nvtx3::v1::unique_range_in::unique_range_in</a></div><div class="ttdeci">unique_range_in(Args const &amp;... args) noexcept</div><div class="ttdoc">Constructs a unique_range_in from the constructor arguments of an event_attributes.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l02535">nvtx3.hpp:2535</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1unique__range__in_html_adcf350963f4c071aed55c6c7315847d1"><div class="ttname"><a href="classnvtx3_1_1v1_1_1unique__range__in.html#adcf350963f4c071aed55c6c7315847d1">nvtx3::v1::unique_range_in::unique_range_in</a></div><div class="ttdeci">unique_range_in(event_attributes const &amp;attr) noexcept</div><div class="ttdoc">Construct a new unique_range_in object with the specified event attributes.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l02510">nvtx3.hpp:2510</a></div></div>
<div class="ttc" id="anvtx3_8hpp_html_a0ef24a4252e5cc6267766410a03dcebb"><div class="ttname"><a href="nvtx3_8hpp.html#a0ef24a4252e5cc6267766410a03dcebb">nvtx3::v1::end_range_in</a></div><div class="ttdeci">void end_range_in(range_handle r) noexcept</div><div class="ttdoc">Manually end the range associated with the handle r in domain D.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l02442">nvtx3.hpp:2442</a></div></div>
<div class="ttc" id="anvtx3_8hpp_html_a19ff87d74e1ba3b674b6e0a542d7a228"><div class="ttname"><a href="nvtx3_8hpp.html#a19ff87d74e1ba3b674b6e0a542d7a228">nvtx3::v1::mark_in</a></div><div class="ttdeci">void mark_in(event_attributes const &amp;attr) noexcept</div><div class="ttdoc">Annotates an instantaneous point in time with a &quot;marker&quot;, using the attributes specified by attr.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l02618">nvtx3.hpp:2618</a></div></div>
<div class="ttc" id="anvtx3_8hpp_html_a58d393b13ffc2fe5f44b0171be0bec23"><div class="ttname"><a href="nvtx3_8hpp.html#a58d393b13ffc2fe5f44b0171be0bec23">nvtx3::v1::start_range_in</a></div><div class="ttdeci">range_handle start_range_in(event_attributes const &amp;attr) noexcept</div><div class="ttdoc">Manually begin an NVTX range.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l02303">nvtx3.hpp:2303</a></div></div>
<div class="ttc" id="anvtx3_8hpp_html_a944d0beb92c70e5d3842c5dc4fca81ec"><div class="ttname"><a href="nvtx3_8hpp.html#a944d0beb92c70e5d3842c5dc4fca81ec">nvtx3::v1::start_range</a></div><div class="ttdeci">range_handle start_range(event_attributes const &amp;attr) noexcept</div><div class="ttdoc">Manually begin an NVTX range in the global domain.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l02379">nvtx3.hpp:2379</a></div></div>
<div class="ttc" id="anvtx3_8hpp_html_aa2016d0df543887a838402751356433d"><div class="ttname"><a href="nvtx3_8hpp.html#aa2016d0df543887a838402751356433d">nvtx3::v1::operator==</a></div><div class="ttdeci">constexpr bool operator==(range_handle lhs, range_handle rhs) noexcept</div><div class="ttdoc">Compares two range_handles for equality.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l02260">nvtx3.hpp:2260</a></div></div>
<div class="ttc" id="anvtx3_8hpp_html_aa9b21b20125928a45a37c12bf1992651"><div class="ttname"><a href="nvtx3_8hpp.html#aa9b21b20125928a45a37c12bf1992651">nvtx3::v1::mark</a></div><div class="ttdeci">void mark(event_attributes const &amp;attr) noexcept</div><div class="ttdoc">Annotates an instantaneous point in time with a &quot;marker&quot;, using the attributes specified by attr,...</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l02682">nvtx3.hpp:2682</a></div></div>
<div class="ttc" id="anvtx3_8hpp_html_aaaae235fe6980a2ac95eb4f35d6e9ad1"><div class="ttname"><a href="nvtx3_8hpp.html#aaaae235fe6980a2ac95eb4f35d6e9ad1">nvtx3::v1::operator!=</a></div><div class="ttdeci">constexpr bool operator!=(range_handle lhs, range_handle rhs) noexcept</div><div class="ttdoc">Compares two range_handles for inequality.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l02271">nvtx3.hpp:2271</a></div></div>
<div class="ttc" id="anvtx3_8hpp_html_aec1adbeb9e44752027d2ede89f1f0dba"><div class="ttname"><a href="nvtx3_8hpp.html#aec1adbeb9e44752027d2ede89f1f0dba">nvtx3::v1::end_range</a></div><div class="ttdeci">void end_range(range_handle r) noexcept</div><div class="ttdoc">Manually end the range associated with the handle r in the global domain.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l02464">nvtx3.hpp:2464</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1argb_html"><div class="ttname"><a href="structnvtx3_1_1v1_1_1argb.html">nvtx3::argb</a></div><div class="ttdoc">Indicates the value of the alpha, red, green, and blue color channels for an ARGB color to use as an ...</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l00984">nvtx3.hpp:984</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1argb_html_afe825f33bf3e68178c1df87d86ec9d93"><div class="ttname"><a href="structnvtx3_1_1v1_1_1argb.html#afe825f33bf3e68178c1df87d86ec9d93">nvtx3::v1::argb::argb</a></div><div class="ttdeci">constexpr argb(component_type alpha_, component_type red_, component_type green_, component_type blue_) noexcept</div><div class="ttdoc">Construct an argb with alpha, red, green, and blue channels specified by alpha_, red_,...</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l00997">nvtx3.hpp:997</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1domain_1_1global_html"><div class="ttname"><a href="structnvtx3_1_1v1_1_1domain_1_1global.html">nvtx3::v1::domain::global</a></div><div class="ttdoc">Tag type for the &quot;global&quot; NVTX domain.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l00746">nvtx3.hpp:746</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1range__handle_html"><div class="ttname"><a href="structnvtx3_1_1v1_1_1range__handle.html">nvtx3::range_handle</a></div><div class="ttdoc">Handle used for correlating explicit range start and end events.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l02199">nvtx3.hpp:2199</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1range__handle_html_a268da1820c8b8c63210123f0eca23b4d"><div class="ttname"><a href="structnvtx3_1_1v1_1_1range__handle.html#a268da1820c8b8c63210123f0eca23b4d">nvtx3::v1::range_handle::range_handle</a></div><div class="ttdeci">constexpr range_handle(value_type id) noexcept</div><div class="ttdoc">Construct a range_handle from the given id.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l02208">nvtx3.hpp:2208</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1range__handle_html_a3919493cff16228eed36c9a3c3f84de6"><div class="ttname"><a href="structnvtx3_1_1v1_1_1range__handle.html#a3919493cff16228eed36c9a3c3f84de6">nvtx3::v1::range_handle::get_value</a></div><div class="ttdeci">constexpr value_type get_value() const noexcept</div><div class="ttdoc">Returns the range_handle's value.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l02245">nvtx3.hpp:2245</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1range__handle_html_a5d0f33132aa6782d681656040dd6ce7f"><div class="ttname"><a href="structnvtx3_1_1v1_1_1range__handle.html#a5d0f33132aa6782d681656040dd6ce7f">nvtx3::v1::range_handle::range_handle</a></div><div class="ttdeci">constexpr range_handle() noexcept=default</div><div class="ttdoc">Constructs a null range handle.</div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1range__handle_html_a77be25af5cf21fde96c18bf30727f109"><div class="ttname"><a href="structnvtx3_1_1v1_1_1range__handle.html#a77be25af5cf21fde96c18bf30727f109">nvtx3::v1::range_handle::value_type</a></div><div class="ttdeci">nvtxRangeId_t value_type</div><div class="ttdoc">Type used for the handle's value.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l02201">nvtx3.hpp:2201</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1range__handle_html_acaef1aa87e8c7ce936b0e93040b8ad3a"><div class="ttname"><a href="structnvtx3_1_1v1_1_1range__handle.html#acaef1aa87e8c7ce936b0e93040b8ad3a">nvtx3::v1::range_handle::range_handle</a></div><div class="ttdeci">constexpr range_handle(std::nullptr_t) noexcept</div><div class="ttdoc">Implicit conversion from nullptr constructs a null handle.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l02238">nvtx3.hpp:2238</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1rgb_html"><div class="ttname"><a href="structnvtx3_1_1v1_1_1rgb.html">nvtx3::rgb</a></div><div class="ttdoc">Indicates the values of the red, green, and blue color channels for an RGB color to use as an event a...</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l00952">nvtx3.hpp:952</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1rgb_html_a558a299dbc7c98f3d9b7cdd4a5e013e4"><div class="ttname"><a href="structnvtx3_1_1v1_1_1rgb.html#a558a299dbc7c98f3d9b7cdd4a5e013e4">nvtx3::v1::rgb::rgb</a></div><div class="ttdeci">constexpr rgb(component_type red_, component_type green_, component_type blue_) noexcept</div><div class="ttdoc">Construct a rgb with red, green, and blue channels specified by red_, green_, and blue_,...</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l00966">nvtx3.hpp:966</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1rgb_html_afc2175c4660eb39a9d905528d02fe1b8"><div class="ttname"><a href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">nvtx3::v1::rgb::component_type</a></div><div class="ttdeci">uint8_t component_type</div><div class="ttdoc">Type used for component values.</div><div class="ttdef"><b>Definition:</b> <a href="nvtx3_8hpp_source.html#l00954">nvtx3.hpp:954</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.5
</small></address>
</body>
</html>
